Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > idTCPClient/idTCRServer


Автор: ElusivE 29.5.2005, 03:00
Чет нигде не могу найти, как отправлять посты с помощью этого компонента

Автор: <Spawn> 30.5.2005, 04:55
Вот простейший пример(не помню для каких целей набрасывал, но работает):

Сервер

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPServer, StdCtrls,
  StrUtils;

type
  TForm1 = class(TForm)
    IdTCPServer: TIdTCPServer;
    Memo1: TMemo;
    btnState: TButton;
    procedure btnStateClick(Sender: TObject);
    procedure IdTCPServerExecute(AThread: TIdPeerThread);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnStateClick(Sender: TObject);
begin
  idTCPServer.Active := not idTCPServer.Active;
  btnState.Caption := IfThen(idTCPServer.Active, 'Stop', 'Start');
end;

procedure TForm1.IdTCPServerExecute(AThread: TIdPeerThread);
begin
  Memo1.Lines.Add(AThread.Connection.ReadLn);
end;

end.


Клиент

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  StdCtrls, StrUtils;

type
  TForm1 = class(TForm)
    IdTCPClient: TIdTCPClient;
    btnState: TButton;
    edtSend: TEdit;
    btnSend: TButton;
    procedure btnStateClick(Sender: TObject);
    procedure btnSendClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnStateClick(Sender: TObject);
begin
  if not idTCPClient.Connected then
    idTCPClient.Connect
  else
    idTCPClient.Disconnect;

  btnState.Caption := IfThen(idTCPClient.Connected, 'Disconnect', 'Connect');
end;

procedure TForm1.btnSendClick(Sender: TObject);
begin
  if idTCPClient.Connected then
    idTCPClient.WriteLn(edtSend.Text);
end;

Добавлено @ 04:57
Разумеется должны быть прописаны такие свойства как host(localhost) и port(допустим 5000) у клиента и DefaultPort(5000) у сервера

Автор: Guest 31.5.2005, 00:09
Спасибо... как только появится минутка свободная - испытаю...

Автор: Плаха 31.5.2005, 10:24
юзай сокеты. легко и просто

Автор: Гость_Snake 27.6.2005, 07:27
А как избавиться от ошибки 10053 при работе с сокетами ?

Автор: Archon7th 27.6.2005, 09:08
Плаха
Через сокеты большие пакеты непролязят ... точнее они пролазят неполностью, встречаються выщерблены и пакеты без концовок

Автор: Snowy 27.6.2005, 10:42
Цитата
А как избавиться от ошибки 10053 при работе с сокетами ?

Ошибка: соединение невозможно.
Решение для данного случая:
Код

try
  idTCPClient.Connect
except
  ShowMessage('Не могу соедениться с сервером');
end;

Автор: RA 28.6.2005, 05:10
Цитата(Archon7th @ 27.6.2005, 09:08)
Через сокеты большие пакеты непролязят ... точнее они пролазят неполностью, встречаються выщерблены и пакеты без концовок


Цитата
юзай сокеты. легко и просто



Archon7th, Плаха
Так называемые вами сокеты - единсвенный способ передачи сетевой информации. А то, какой компонент как их использует, и через какой протокол как работает это уже другой разговор.

Автор: Archon7th 3.8.2005, 16:22
Здесь сказано как Client'ом отправлять сообщения, а принять он их что не может ?

.... у меня просто ситуация, что я посылаю сообщение и почти сразу мне должен приходить ответ, по тому порту от которого было послано сообщение <_<

... до этого я использовал TClientSocket и этот момент работал прекрасно, но неработал другой ... а теперь, вроде как, всё на оборот <_<

Автор: Dubinsky 4.8.2005, 15:17
подскажите люди добрые , а если к серверу (Indy) подключилось несколько клиентов , как узнать их кол-во и послать кому то конкретно сообщение .

в TServerSocket всё было ясно в Indy не пойму ...

Автор: Romero 6.8.2005, 15:01
Посмотрите демку в комплекте с 6 дельфей - там все просто и доступно написано (чат для локалки).

Автор: Dubinsky 7.8.2005, 13:07
чат же вроде на TServerSocket написан или в 6 Делфях есть и на Инди ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)