![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#5
|
||||
|
||||
![]() Цитата:
Код конечно смотрите: Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ScktComp; type TForm1 = class(TForm) svSocket: TServerSocket; clSocket: TClientSocket; mmOutput: TMemo; mmInput: TMemo; btnSend: TButton; Bevel1: TBevel; edtHost: TEdit; Label1: TLabel; procedure mmInputKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormCreate(Sender: TObject); procedure btnSendClick(Sender: TObject); procedure svSocketListen(Sender: TObject; Socket: TCustomWinSocket); procedure svSocketClientWrite(Sender: TObject; Socket: TCustomWinSocket); procedure svSocketClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure svSocketClientConnect(Sender: TObject; Socket: TCustomWinSocket); procedure svSocketClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); procedure svSocketAccept(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses StrUtils; {$R *.dfm} procedure log(s: String); begin Form1.mmOutput.Lines.Add(s); end; procedure TForm1.mmInputKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if(ssCtrl in Shift)and(Key=VK_RETURN)then btnSend.Click; end; procedure TForm1.FormCreate(Sender: TObject); begin svSocket.Active := true; if(svSocket.Socket.Connected)then log('Сообщения прослушиваются') else log('Ошибка инициализации прослушивания'); end; procedure TForm1.btnSendClick(Sender: TObject); var msg: String; t: Cardinal; Begin t := GetTickCount; msg := mmInput.Lines.Text; clSocket.Host := edtHost.Text; try clSocket.Active := true; if(clSocket.Socket.Connected)then begin log(svSocket.Socket.LocalHost+': '+msg); clSocket.Socket.SendText('msg:'+msg); end; finally clSocket.Active := false; mmInput.Lines.Clear; log('SendTime: '+IntToStr(GetTickCount-t)+' ms'); end; end; procedure TForm1.svSocketListen(Sender: TObject; Socket: TCustomWinSocket); begin log('listen: '+Socket.RemoteHost); end; procedure TForm1.svSocketClientWrite(Sender: TObject; Socket: TCustomWinSocket); begin log('clWrite: '+Socket.RemoteHost); end; procedure TForm1.svSocketClientRead(Sender: TObject; Socket: TCustomWinSocket); var cmd,msg: String; begin cmd := Socket.ReceiveText; msg := AnsiMidStr(cmd,4,length(cmd)); if(AnsiStartsText('msg:',cmd))then begin //message log(' ] '+Socket.RemoteHost+': '+msg); end; end; procedure TForm1.svSocketClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin log('clConnect: '+Socket.RemoteHost); end; procedure TForm1.svSocketClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin log('clDisconnnect: '+Socket.RemoteHost); end; procedure TForm1.svSocketAccept(Sender: TObject; Socket: TCustomWinSocket); var s: String; begin log(' ] Message from '+Socket.RemoteHost); s := Socket.ReceiveText; while s<>'' do begin log(' '+s); s := Socket.ReceiveText; end; log(' [------------------------]'); end; end. TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |