- unit Unit1;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, ExtCtrls, OverbyteIcsWndControl, OverbyteIcsWSocket,
- OverbyteIcsWSocketS;
- type
- TForm1 = class(TForm)
- WSocketServer1: TWSocketServer;
- WSocket1: TWSocket;
- Panel1: TPanel;
- Button1: TButton;
- Button2: TButton;
- Memo1: TMemo;
- Button3: TButton;
- Button4: TButton;
- Button5: TButton;
- Edit1: TEdit;
- procedure Button1Click(Sender: TObject);
- procedure WSocketServer1ClientConnect(Sender: TObject;
- Client: TWSocketClient; Error: Word);
- procedure WSocketServer1ClientDisconnect(Sender: TObject;
- Client: TWSocketClient; Error: Word);
- procedure Button2Click(Sender: TObject);
- procedure Button3Click(Sender: TObject);
- procedure Button4Click(Sender: TObject);
- procedure Button5Click(Sender: TObject);
- procedure WSocketServer1DataAvailable(Sender: TObject; ErrCode: Word);
- procedure WSocketServer1ChangeState(Sender: TObject; OldState,
- NewState: TSocketState);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.dfm}
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- //start listen...
- try
- WSocketServer1.Close;
- WSocketServer1.Addr :='127.0.0.1';
- WSocketServer1.Port :='6000';
- //WSocketServer1.Banner:='';
- //WSocketServer1.BannerTooBusy:='';
- //WSocketServer1.ClientClass := TWSocketClient;
- WSocketServer1.Listen;
- except
- end;
- end;
- procedure TForm1.WSocketServer1ClientConnect(Sender: TObject;
- Client: TWSocketClient; Error: Word);
- begin
- <span style="color:#FF0000;">//注意:ICS TCP SERVER收到客户端连接进,必须要将数据处理事件方法入口委托到给客户端Client的处理方法入口,否则无法响应收数据的事件。
- Client.OnDataAvailable := WSocketServer1DataAvailable;</span>
- Memo1.Lines.Add( Format('Client [%s:%s] Connected..',[ Client.GetPeerAddr,client.GetPeerPort]));
- end;
- procedure TForm1.WSocketServer1ClientDisconnect(Sender: TObject;
- Client: TWSocketClient; Error: Word);
- begin
- Memo1.Lines.Add( Format('Client [%s:%s] disConnected..',[ Client.GetPeerAddr,client.GetPeerPort]));
- end;
- procedure TForm1.Button2Click(Sender: TObject);
- begin
- try
- WSocket1.Addr :='127.0.0.1';
- WSocket1.Port :='6000';
- WSocket1.Connect;
- except
- end;
- end;
- procedure TForm1.Button3Click(Sender: TObject);
- begin
- WSocket1.Close;
- end;
- procedure TForm1.Button4Click(Sender: TObject);
- begin
- WSocketServer1.Close;
- end;
- procedure TForm1.Button5Click(Sender: TObject);
- var i,sendlen:Integer; sendbuff:array[0..32] of byte; data:Pointer; str:string;
- begin
- if WSocket1.State = wsConnected then
- begin
- FillChar(sendbuff,33,0);
- str:='';
- for i:=0 to 31 do
- begin
- sendbuff[i] := Random(256) ;
- str := str +' '+inttohex( sendbuff[i] ,2);
- end;
- sendlen := 32;
- data := @sendbuff;
- WSocket1.Send( data, sendlen );
- Memo1.Lines.Add( Format('==>[%s:%s];Sendlen=%d; data:"%s"',
- [WSocket1.Addr,WSocket1.Port, sendlen, str]));
- end;
- end;
- procedure TForm1.WSocketServer1DataAvailable(Sender: TObject;
- ErrCode: Word);
- var
- buffer:array [0..1023] of Byte;
- recvLen:Integer;
- str,
- strData:string;i:Integer;
- client:TWSocketClient;
- readBuffer:Pointer;
- begin
- client := TWSocketClient(Sender);
- if Assigned( client ) then
- begin
- FillChar(buffer,1024,0);
- recvLen := client.RcvdCount;
- readBuffer := @buffer;
- recvLen := client.Receive( readBuffer, recvLen );
- //str := client.ReceiveStr;
- strData :='';str:='';
- for i:=0 to recvLen-1 do begin
- strData:=strdata+' '+inttohex( buffer[i], 2);
- str:=str+char( buffer[i] )
- end;
- Memo1.Lines.Add( Format('<==[%s:%s];RecvLen=%d; hex:"%s";data:"%s";',
- [client.GetPeerAddr,client.GetPeerPort,recvLen,trim(strdata),str]) );
- end;
- end;
- procedure TForm1.WSocketServer1ChangeState(Sender: TObject; OldState,
- NewState: TSocketState);
- begin
- case NewState of
- wsListening:
- begin
- Memo1.Lines.Add('TCP Server Start listening...')
- end;
- end;
- end;
- end.
DELPHI 7 ICS控件
最新推荐文章于 2024-08-07 19:16:15 发布