unit serverunit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ScktComp; type TForm1 = class(TForm) ServerSocket1: TServerSocket; Memo1: TMemo; Label1: TLabel; ClientSocket1: TClientSocket; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure Memo1Change(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin ServerSocket1.Port := 23; ServerSocket1.Active := True; ClientSocket1.Port := 23; ClientSocket1.Active := True; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin ServerSocket1.Active := False; ClientSocket1.Active := False; end; procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var i:integer; sRec:string; Mem:string; begin for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do begin with ServerSocket1.Socket.Connections[i] do begin sRec := ReceiveText; if sRec <> '' then begin Memo1.Lines.Add(RemoteAddress + ' says: ' + sRec); Memo1.Lines.Add('------------------'); end; end; end; ClientSocket1.Host := 'RemoteAddress'; ClientSocket1.Active := True; end; procedure TForm1.Memo1Change(Sender: TObject); begin if ClientSocket1.Active then ClientSocket1.Socket.SendText(Memo1.Text); end; end.