DELPHI 7 ICS控件

来源:互联网 发布:cba数据 编辑:程序博客网 时间:2024/06/04 19:14
[delphi] view plain copy
 print?
  1. unit Unit1;  
  2.   
  3. interface  
  4.   
  5. uses  
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  7.   Dialogs, StdCtrls, ExtCtrls, OverbyteIcsWndControl, OverbyteIcsWSocket,  
  8.   OverbyteIcsWSocketS;  
  9.   
  10. type  
  11.   TForm1 = class(TForm)  
  12.     WSocketServer1: TWSocketServer;  
  13.     WSocket1: TWSocket;  
  14.     Panel1: TPanel;  
  15.     Button1: TButton;  
  16.     Button2: TButton;  
  17.     Memo1: TMemo;  
  18.     Button3: TButton;  
  19.     Button4: TButton;  
  20.     Button5: TButton;  
  21.     Edit1: TEdit;  
  22.     procedure Button1Click(Sender: TObject);  
  23.     procedure WSocketServer1ClientConnect(Sender: TObject;  
  24.       Client: TWSocketClient; Error: Word);  
  25.     procedure WSocketServer1ClientDisconnect(Sender: TObject;  
  26.       Client: TWSocketClient; Error: Word);  
  27.     procedure Button2Click(Sender: TObject);  
  28.     procedure Button3Click(Sender: TObject);  
  29.     procedure Button4Click(Sender: TObject);  
  30.     procedure Button5Click(Sender: TObject);  
  31.     procedure WSocketServer1DataAvailable(Sender: TObject; ErrCode: Word);  
  32.     procedure WSocketServer1ChangeState(Sender: TObject; OldState,  
  33.       NewState: TSocketState);  
  34.   private  
  35.     { Private declarations }  
  36.   public  
  37.     { Public declarations }  
  38.   end;  
  39.   
  40. var  
  41.   Form1: TForm1;  
  42.   
  43. implementation  
  44.   
  45. {$R *.dfm}  
  46.   
  47. procedure TForm1.Button1Click(Sender: TObject);  
  48. begin  
  49. //start listen...  
  50.  try  
  51.    WSocketServer1.Close;  
  52.    WSocketServer1.Addr :='127.0.0.1';  
  53.    WSocketServer1.Port :='6000';  
  54.    //WSocketServer1.Banner:='';  
  55.    //WSocketServer1.BannerTooBusy:='';  
  56.    //WSocketServer1.ClientClass := TWSocketClient;  
  57.    WSocketServer1.Listen;  
  58.  except  
  59.   
  60.  end;  
  61. end;  
  62.   
  63. procedure TForm1.WSocketServer1ClientConnect(Sender: TObject;  
  64.   Client: TWSocketClient; Error: Word);  
  65. begin  
  66.   
  67. <span style="color:#FF0000;">//注意:ICS TCP SERVER收到客户端连接进,必须要将数据处理事件方法入口委托到给客户端Client的处理方法入口,否则无法响应收数据的事件。  
  68.  Client.OnDataAvailable :=  WSocketServer1DataAvailable;</span>  
  69.   
  70.  Memo1.Lines.Add( Format('Client [%s:%s] Connected..',[ Client.GetPeerAddr,client.GetPeerPort]));  
  71. end;  
  72.   
  73. procedure TForm1.WSocketServer1ClientDisconnect(Sender: TObject;  
  74.   Client: TWSocketClient; Error: Word);  
  75. begin  
  76.   Memo1.Lines.Add( Format('Client [%s:%s] disConnected..',[ Client.GetPeerAddr,client.GetPeerPort]));  
  77. end;  
  78.   
  79. procedure TForm1.Button2Click(Sender: TObject);  
  80. begin  
  81.   try  
  82.     WSocket1.Addr :='127.0.0.1';  
  83.     WSocket1.Port :='6000';  
  84.     WSocket1.Connect;  
  85.   except  
  86.   
  87.   end;  
  88. end;  
  89.   
  90. procedure TForm1.Button3Click(Sender: TObject);  
  91. begin  
  92.   WSocket1.Close;  
  93. end;  
  94.   
  95. procedure TForm1.Button4Click(Sender: TObject);  
  96. begin  
  97.   WSocketServer1.Close;  
  98. end;  
  99.   
  100. procedure TForm1.Button5Click(Sender: TObject);  
  101. var i,sendlen:Integer; sendbuff:array[0..32of byte;  data:Pointer; str:string;  
  102. begin  
  103.   if WSocket1.State = wsConnected then  
  104.   begin  
  105.     FillChar(sendbuff,33,0);  
  106.     str:='';  
  107.     for i:=0 to 31 do  
  108.     begin  
  109.       sendbuff[i] :=  Random(256) ;  
  110.       str := str +' '+inttohex( sendbuff[i] ,2);  
  111.     end;  
  112.     sendlen := 32;  
  113.     data := @sendbuff;  
  114.     WSocket1.Send( data, sendlen );  
  115.     Memo1.Lines.Add( Format('==>[%s:%s];Sendlen=%d; data:"%s"',  
  116.     [WSocket1.Addr,WSocket1.Port, sendlen, str]));  
  117.   end;  
  118. end;  
  119.   
  120. procedure TForm1.WSocketServer1DataAvailable(Sender: TObject;  
  121.   ErrCode: Word);  
  122.   var  
  123.   buffer:array [0..1023of Byte;  
  124.   recvLen:Integer;  
  125.   str,  
  126.   strData:string;i:Integer;  
  127.   client:TWSocketClient;  
  128.   readBuffer:Pointer;  
  129. begin  
  130.   client := TWSocketClient(Sender);  
  131.   if Assigned( client ) then  
  132.   begin  
  133.       FillChar(buffer,1024,0);  
  134.       recvLen := client.RcvdCount;  
  135.       readBuffer := @buffer;  
  136.       recvLen := client.Receive( readBuffer, recvLen );  
  137.       //str := client.ReceiveStr;  
  138.       strData :='';str:='';  
  139.       for i:=0 to recvLen-1 do  begin  
  140.         strData:=strdata+' '+inttohex( buffer[i], 2);  
  141.         str:=str+char( buffer[i] )  
  142.       end;  
  143.       Memo1.Lines.Add( Format('<==[%s:%s];RecvLen=%d; hex:"%s";data:"%s";',  
  144.       [client.GetPeerAddr,client.GetPeerPort,recvLen,trim(strdata),str]) );  
  145.   end;       
  146. end;  
  147.   
  148. procedure TForm1.WSocketServer1ChangeState(Sender: TObject; OldState,  
  149.   NewState: TSocketState);  
  150. begin  
  151.   case NewState of  
  152.      wsListening:  
  153.      begin  
  154.        Memo1.Lines.Add('TCP Server Start listening...')  
  155.      end;  
  156.   
  157.   end;  
  158.   
  159. end;  
  160.   
  161. end.  
原创粉丝点击