Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.06.2008, 20:25
Аватар для Genry
Genry Genry вне форума
Начинающий
 
Регистрация: 14.04.2008
Адрес: с. Россия, г. Курган
Сообщения: 160
Версия Delphi: 7
Репутация: 10
Вопрос Как передать текстовые данные с одного компьютера на другой?

Два компьютера. (допустим) Один компьютер x, а другой y. На обоих есть и запущена эта программы. Как передавать на с одной программы компьютера x другой компьютера y, и обратно? Что-то типа чато, но передаваться будут координаты.
Ответить с цитированием
  #2  
Старый 05.06.2008, 20:50
Аватар для }{ОТТ@БЫЧ
}{ОТТ@БЫЧ }{ОТТ@БЫЧ вне форума
Прохожий
 
Регистрация: 07.05.2008
Сообщения: 41
Репутация: 10
Сообщение Сложного мало...

Я делаю это с помощью компонента TSocketServer/Client. В Delphi7 установить: delphi7\bin\dclsockets70.bpl. Компоненты>Установить пакет, в окне кликай на "Добавть" ищи по этому пути. После установки они появятся во вкладке Internet.
сервер:
Код:
.....
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket); //Принятие текста
 var s:string;
begin
s:=Socket.ReceiveText;
ShowMessage(s);
end;
...
procedure TForm1.Button1Click(Sender: TObject); //Посылка всем
var i:integer; s:string;
begin
s:='Delphi';
for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do
    ServerSocket1.Socket.Connections[i].SendText(s);
end;
...
Клиент аналагично:
Код:
....
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket); //Принятие от сервера
  var s:string;
begin
s:=Socket.ReceiveText;
ShowMessage(s);
end;
...
procedure TForm1.Button1Click(Sender: TObject); //Посылка
var s:string;
begin
s:='Delphi';
ClientSocket1.Socket.SendText(s);
end;
...
Есть еще Indy компоненты... но мне стандартные больше Но это дело каждого...
Ответить с цитированием
  #3  
Старый 05.06.2008, 21:08
Аватар для Genry
Genry Genry вне форума
Начинающий
 
Регистрация: 14.04.2008
Адрес: с. Россия, г. Курган
Сообщения: 160
Версия Delphi: 7
Репутация: 10
Вопрос Спасибо.

Я правильно понял, что для сервера одна прога , а для клиенты другая?
Ответить с цитированием
  #4  
Старый 05.06.2008, 21:20
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Не совсем. Тебе никто не мешает и сервер и клиента реализовать в одной программе. Более того, у тебя одна прога может слать сама себе сообщения.

ЗЫ. Я бы делал через Indy.
Ответить с цитированием
  #5  
Старый 05.06.2008, 21:27
Аватар для Genry
Genry Genry вне форума
Начинающий
 
Регистрация: 14.04.2008
Адрес: с. Россия, г. Курган
Сообщения: 160
Версия Delphi: 7
Репутация: 10
По умолчанию

А как через Indy? И можно ли так, чтобы я как бы создавал сервак, а мой друг подключался и мы играли? (я делаю мини игру)
Ответить с цитированием
  #6  
Старый 06.06.2008, 13:26
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну если тебе передавать какие-то данные просто, то используй TCmdTCPServer/TCmdTCPClient (кажется так называются). Они удобны тем, что ты просто задаешь команды и работвешь уже с данными. Если будешь передавать бинарные данные, то запакуй их в Base64 (Компоненты соответсвующие у индюка есть). В программе при старте выбираешь режим - клиент или сервер. Все.

Да, демки можно посмотреть на www.indyproject.org.
Ответить с цитированием
  #7  
Старый 06.06.2008, 13:47
Аватар для Genry
Genry Genry вне форума
Начинающий
 
Регистрация: 14.04.2008
Адрес: с. Россия, г. Курган
Сообщения: 160
Версия Delphi: 7
Репутация: 10
По умолчанию

Я не понял что на http://www.indyproject.org/index.en.aspx надо делать, там все на английском. Хотя у меня и есть Сократ Персональный 4.1, но он ужасно переводит.
А можно чтобы был указан IP в компоненте и ему отправлять? А то например так информацию передает наверное всем программа, которые использую эти компоненты.
Ответить с цитированием
  #8  
Старый 06.06.2008, 16:46
Аватар для Genry
Genry Genry вне форума
Начинающий
 
Регистрация: 14.04.2008
Адрес: с. Россия, г. Курган
Сообщения: 160
Версия Delphi: 7
Репутация: 10
По умолчанию

TSocketServer/Client надо ставить свойство Active:=true???
Ответить с цитированием
  #9  
Старый 06.06.2008, 20:53
Аватар для }{ОТТ@БЫЧ
}{ОТТ@БЫЧ }{ОТТ@БЫЧ вне форума
Прохожий
 
Регистрация: 07.05.2008
Сообщения: 41
Репутация: 10
По умолчанию

Необязательно. Используй для подключения: ServerSocket1.Open; , также и для клиента. Отключение аналагично: ServerSocket1.Close;.
Тут есть статейка про сокеты.
Выложил исходник чата (с тойже страници )
Вложения
Тип файла: zip chat_exm.zip (18.0 Кбайт, 39 просмотров)
Ответить с цитированием
  #10  
Старый 10.06.2008, 10:01
Аватар для Genry
Genry Genry вне форума
Начинающий
 
Регистрация: 14.04.2008
Адрес: с. Россия, г. Курган
Сообщения: 160
Версия Delphi: 7
Репутация: 10
Печаль

Попробую сделать с ботами...
__________________
http://forceway.ru/
Ответить с цитированием
  #11  
Старый 30.06.2008, 11:34
Raam Raam вне форума
Прохожий
 
Регистрация: 19.05.2008
Сообщения: 3
Репутация: 10
По умолчанию

вопрос: а через нет чтобы такой чат организовать надо иметь фиксированный ip адресс или он просто по имени найдет или как вообще?
Ответить с цитированием
  #12  
Старый 30.06.2008, 11:49
Аватар для Genry
Genry Genry вне форума
Начинающий
 
Регистрация: 14.04.2008
Адрес: с. Россия, г. Курган
Сообщения: 160
Версия Delphi: 7
Репутация: 10
По умолчанию

В сокете есть Port, вот ему надо присвоить значение.
__________________
http://forceway.ru/
Ответить с цитированием
  #13  
Старый 30.06.2008, 12:24
Аватар для Genry
Genry Genry вне форума
Начинающий
 
Регистрация: 14.04.2008
Адрес: с. Россия, г. Курган
Сообщения: 160
Версия Delphi: 7
Репутация: 10
По умолчанию Помогите!

Я сделал простенький чат, компилировал его, отправил exe знакомому и при подключении к серверу у него какая-то ошибка, что типа сервак не найден чтоли... помогите, я думаю у меня не создается сервак....
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ActnList, StdCtrls, ScktComp;

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    ServerSocket1: TServerSocket;
    Edit1: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    Edit2: TEdit;
    ActionList1: TActionList;
    Action1: TAction;
    Label1: TLabel;
    Edit3: TEdit;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure Button2Click(Sender: TObject);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  this: string='client';
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  ClientSocket1.Port:=strtoint(edit1.Text);
  ClientSocket1.Open;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add(Socket.ReceiveText)
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i: integer;
begin
if this='server' then begin
for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do
    ServerSocket1.Socket.Connections[i].SendText(Edit2.Text);
    Memo1.lines.Add('['+Edit3.Text+'] '+Edit2.Text);
    Edit2.Clear; end
else
if this='client' then begin
ClientSocket1.Socket.SendText(edit2.text);
    Memo1.lines.Add('['+Edit3.Text+'] '+Edit2.Text);
edit2.clear;
end;
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add(Socket.ReceiveText);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
//  ServerSocket1.Port:=strtoint(edit1.text);
  ServerSocket1.Open;
  ServerSocket1.Active:=true;
  this:='server';
end;

end.
__________________
http://forceway.ru/
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:20.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter