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