我在循环里面发包,如下:
for i:=0 to 100 do 
  ClientSocket1.Socket.SendText(sMsg);请问我如何收到服务器对每个包的回复?我原来是在ClientSocket 的 OnRead事件里
取的:
  Memo1.Lines.Add('BQ:' + Socket.ReceiveText);
但直到循环结束只收到一个返回包.为什么呀?

解决方案 »

  1.   

    簡單修改如下:
    for i:=0 to 100 do 
    begin
      ClientSocket1.Socket.SendText(sMsg);
      sleep(500);
    end;你這樣發得太快了, ServerSocket會將你那100個包當成一個接收下來的!!所以..你的問題就..
      

  2.   

    简单加个同步机制就行在OnRead中:
       isReceving:=true;
       DoReceving;
       isReceving:=false;在发送:
    for i:=0 to 100 do 
    begin
      ClientSocket1.Socket.SendText(sMsg);
      isReceving:=true;
      while isReceving and (not Timeout) do
        ;
    end;