private thr:tserverclientwinsocket; //serversockitconnection : TCustomWinSocket; var myt:TClientThread; procedure Tfrmsever.ServerSocketGetThread(Sender: TObject; ClientSocket: TServerClientWinSocket; var SocketThread: TServerClientThread); var i :integer; begin myt:= TClientThread.Create(false, ClientSocket); myt.thr:=clientsocket; socketthread:=myt; //i:=serversocket.Socket.ActiveThreads; //myt.serversockitconnection:=serversocket.Socket.Connections[i-1]; end;
Procedure TClientThread.ClientExecute; Var ReceiveBuffer : Array[0..299] Of Char; SocketStream : TWinSocketStream; BytesRead ,j: Integer; Begin While Not Terminated And ClientSocket.Connected Do Begin try SocketStream := TWinSocketStream.Create(ClientSocket, 60000); try FillChar(ReceiveBuffer, 10, 0); If SocketStream.WaitForData(5000) Then begin Repeat BytesRead := SocketStream.Read(ReceiveBuffer,SizeOf(ReceiveBuffer)); if BytesRead = 0 then ClientSocket.Close Else begin mystream.WriteBuffer(ReceiveBuffer, BytesRead); end; Until Not SocketStream.WaitForData(2000); end; finally SocketStream.Free; ClientSocket.Close; mystream.clear; end; except HandleException; end; End; End;