有点难度(100分)

  • 主题发起人 主题发起人 谭俊峰
  • 开始时间 开始时间

谭俊峰

Unregistered / Unconfirmed
GUEST, unregistred user!
我的客户端先后向服务器发送字符串,比如:
Socket.SendStr('AAA');
Socket.SendStr('BBB');
由于比较短,Socket将其放在缓冲区中一并发送,
致使服务器端只能收到一个OnGetData的消息,
得到的字符串为'AAABBB',
请问该如何避免这种情况,使得可以获得两个OnGetData的消息。

我用的是ICS控件组,请问有什么好办法吗?
 
sleep(1000);
 
试过了, 有时好使,而且影响性能。
 
在字符串前加个标志字符。
 
Socket.SendStr有返回值,非零表示还未完全发送出去,需要再次调用SendStr。用一个循环就可以了。
见LID=530748
 
Socket.SendStr('AAA'+#13+#10);
Socket.SendStr('BBB'+#13+#10);
需要#13#10作为传送结束的标志
 
无话可说
 
To: creation-zy

用一个循环是什么意思,是这样吗,但不行????
K := fSocket.SendStr(Text) ;
while K<>0 do
begin
Application.ProcessMessages;
K := fSocket.FlushTimeout.SendStr('') ;
Application.ProcessMessages;
end;
 
我用的就是 terry_lzs 说的方法, 很好使!
 
真奇怪我用就不好使....
 
后退
顶部