如果我客户端直接关闭程序,就会出现错误“Read error 64 指定的网络名不可再用”,我觉得是客户端SOCKET异常关闭后,服务端没有关闭SOCKET,而继续在该SOCKET上读写,但该怎么处理呢?procedure TMainform.ServerSocket1GetThread(Sender: TObject;
  ClientSocket: TServerClientWinSocket;
  var SocketThread: TServerClientThread);
begin
  SocketThread := TClientThread.Create(False, ClientSocket);
end;
Procedure TClientThread.ClientExecute;
begin
    while Not Terminated And ClientSocket.Connected Do
    begin
      Synchronize(HandleRecvClient);   处理收到的消息
   end;   
end;   // 处理从前台发来的消息
Procedure TClientThread.HandleRecvClient;
var
i,j:integer;
ReceiveBuffer : BufferType;
SocketStream : TWinSocketStream;
BytesRead : Integer;begin
  try
     if not Assigned(SocketStream) then
     begin
       SocketStream := TWinSocketStream.Create(ClientSocket, 60000);
     end;
     FillChar(ReceiveBuffer, sizeof(ReceiveBuffer), 0); { initialize the buffer }     { give the client 5 seconds to start writing }
     If SocketStream.WaitForData(5000) Then
       Repeat
         BytesRead := SocketStream.Read(ReceiveBuffer,SizeOf(ReceiveBuffer));
         if BytesRead > 0 then
         begin
           // ..................  
           // 处理接收到的数据
         end
         else
         begin
             { if can't read in 6 seconds }
               ClientSocket.Close;     { close the connection }
         end;  // if BytesRead > 0
     Until  Not SocketStream.WaitForData(2000); 
   finally
        SocketStream.Free;
   end;
end;