Server端:
procedure TServerThread.ClientExecute;
var
   Stream: TWinSocketStream;
   sSendText: string;
   procedure FailProcess;
   begin
     if Assigned(ClientSocket) then
     begin
       if ClientSocket.Connected then
         ClientSocket.Close;
     end;
     Terminate;
  end;
begin
  inherited FreeOnTerminate := True;
  while (not Terminated) and ClientSocket.Connected do
  begin
    Stream := TWinSocketStream.Create(ClientSocket,giWaitTime);
    try
       try
          if Stream.WaitForData(giWaitTime) then  
          begin
            ....//处理操作
            ClientSocket.SendText(sSendText);
          end
          else
            FailProcess;
       except
         on E: exception do
         begin
             Memo1.lines.add('监听过程中出现异常:' + E.Message);
             Exit;
         end;
       end;
    finally
       if not Terminated then
         FailProcess;
       Stream.Free;
    end;
  end;
end;
Client端:
procedure TFrm_Main.BitSendClick(Sender: TObject);
var st: string;
begin
  ClientSocket1.Address := Trim(Edt_ip.Text);
  ClientSocket1.Port := StrtoInt(Edtport.Text);
  if not ClientSocket1.Active then
     ClientSocket1.Active := True;  st := MemoSend.Text;
  ClientSocket1.Socket.SendText(st);
end;
问题:每次请求服务,client端请求二次server端才能接收到消息。单步跟踪后发现:第一次请求每次到“if Stream.WaitForData(giWaitTime) then”就会执行失败,第二次就成功了!请高手指点如何解决??谢了!