首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

有懂ServerSocket的高手来看看,像这种,如何在服务端主动断开其中某个连接或单独给某个连接发消息呢

2012-03-25 
有懂ServerSocket的高手来看看,像这种,怎么在服务端主动断开其中某个连接或单独给某个连接发消息呢?Delphi

有懂ServerSocket的高手来看看,像这种,怎么在服务端主动断开其中某个连接或单独给某个连接发消息呢?

Delphi(Pascal) code
unit   Unt_socketserver; interface uses     Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,     Dialogs,   xmldom,   XMLIntf,   cxLookAndFeelPainters,   StdCtrls,   cxButtons,     Buttons,   cxControls,   cxContainer,   cxEdit,   cxTextEdit,   Sockets,   msxmldom,     XMLDoc,   ScktComp; type     TFrm_socketserver   =   class(TForm)         XMLDocument1:   TXMLDocument;         Label1:   TLabel;         SpeedButton1:   TSpeedButton;         cxButton1:   TcxButton;         cxButton2:   TcxButton;         OpenDialog1:   TOpenDialog;         cxTextEdit1:   TcxTextEdit;         ServerSocket:   TServerSocket;         procedure   ServerSocketGetThread(Sender:   TObject;             ClientSocket:   TServerClientWinSocket;             var   SocketThread:   TServerClientThread);     private         {   Private   declarations   }     public         {   Public   declarations   }     end;     type     TClientThread   =   Class(TServerClientThread)         private         public         procedure   ClientExecute;   override;         end; var     Frm_socketserver:   TFrm_socketserver; implementation var           host,port,sid,username,password:string; {$R   *.dfm} procedure   TClientThread.ClientExecute; var     ProvideBuffer:   Array[0..120]   Of   Char;     SocketStream   :   TWinSocketStream;     Byteswrite   :   Integer;     s:string; begin   while   not   Terminated   and   ClientSocket.Connected   do     Begin       try           SocketStream:=   TWinSocketStream.Create(ClientSocket,   100);           try                 s:=trim(host+port+sid+username+password);                 strpcopy(ProvideBuffer,s);                 Byteswrite:=SizeOf(ProvideBuffer);                 SocketStream.Write(ProvideBuffer,Byteswrite);           finally               SocketStream.Free;               ClientSocket.Close;           end;       except       end;     end; end; procedure   TFrm_socketserver.ServerSocketGetThread(Sender:   TObject;     ClientSocket:   TServerClientWinSocket;     var   SocketThread:   TServerClientThread); begin SocketThread   :=   TClientThread.Create(False,   ClientSocket); end; end.


有懂ServerSocket的高手来看看,像这种,怎么在服务端主动断开其中某个连接或单独给某个连接发消息呢?

[解决办法]
在 ClientConnect 事件中将Socket 保存到一个列表中。

然后就可以操作每个链接了。
[解决办法]
ClientConnect 事件 中 获得socket 
断开 使用 socket.close
发送消息 socket.sendbuf

热点排行