客户端有一个字串发给服务器,并等待服务器返回数据。
例如:
procedure SendDataTest;
begin
  如果 clientSocket.socket.sendText('OK?'); 成功
  这里要等待服务器应答,直到有数据返回。不要让它产生一个ONSocketRead事件。
  if ClientSocket.ReceiveText = 'OK' then
   //做一些事。
end;
怎样控制它等待多长时间就认为服务器没有数据返回,然后让此过程提示出错。
而且如果服务器返回的数据包大于一个数据包的大小时,这样返回的字串会不会少掉一部分?

解决方案 »

  1.   

    那就showmodal一个窗口,这样函数就会在这里停这,等到你接受到了数据就在关闭模态窗口就可以了!!!
      

  2.   

    当然也可以用多线程,发送&接受斗方在子线程中,require一个信号后发送,等到接受到回应就release信号量,主线程的函数等待这个信号量就可以了。
      

  3.   

    晕到。用Indy组件吧,它的阻塞模式作的不错,对于你的要求很容易实现.
      

  4.   

    在SocketClient的onread事件里写接收信息
      

  5.   

    procedure SendDataTest;
    var
      FirstTickCount:longint;
    begin
      clientSocket.socket.sendText('OK?');  FirstTickCount := GetTickCount;
      Count := 0;
      while (not ClientSocket.Socket.ReceiveLength>0) and (Count<5000) do//超时为5秒
      begin
        application.ProcessMessages;
        Count := GetTickCount-FirstTickCount;
      end;  if ClientSocket.Socket.ReceiveText = 'OK' then
       //做一些事。
    end;