在服务器端,Delphi将为每一个阻塞方式的连接自动分配一个新的线程,
并且用TServerClientThread来操作每一个线程。我这儿有一些代码,不知
道能不能对你有些启发:
Procedure TMyServerThread.clientExecute;
var stream:TWinSocketStream;
Buffer:arrar[0..9]of char;
Begin
{一直循环,到线程终止或连接断开}
While (not Terminated) and ClientSocket.Connected do
Begin
Try Stream:=TwinSocketStream.Create(ClientSOcket,60000);
try
{填充Buffer数组}
FillChar(Buffer,10,0);
{给客户60秒的时间}
If Stream.WaitForData(60000) then
Begin
{在这里取数和给客户返回信息}
......
End
Else ClientSocket.Close;
Finally
Stream.Free;
End;
Except
HandleException;
End;
End;
End;
要创建线程对象,最好在处理OnGetThread事件的句柄中进行.
注意:把CreateSuspended参数设为 Flase.