我在服务器端连续向客户端发送2条信息,为什么有时客户端不是一条一条的收
而是2条连起来当一条收? server端:
Socket.SendText('aaaaaaaaaaaaaa');
Socket.SendText('bbbbbbbbbbbbbb'); Client端:
S:=Socket.ReciveText;
memo1.lines.add(S); memo1中:
aaaaaaaaaaaaaabbbbbbbbbbbbbbb; 照理说应该是
aaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbb
而是2条连起来当一条收? server端:
Socket.SendText('aaaaaaaaaaaaaa');
Socket.SendText('bbbbbbbbbbbbbb'); Client端:
S:=Socket.ReciveText;
memo1.lines.add(S); memo1中:
aaaaaaaaaaaaaabbbbbbbbbbbbbbb; 照理说应该是
aaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbb
解决方案 »
- delphi调用EXE,怎么来判定被调用的EXE已经执行完了?谢谢
- 问form1:=Tform1.create(application);和application.createform(Tform1,form1);区别
- 动态创建treeview该怎么做?
- TDBChart
- 请问,我要从FTP上下载一些资料,但是有时连上去下载的时候,有时不太稳定。是什么原因啊?我用的是D7的idFTP控件
- 01cn精华贴第二期
- 关于 object pascal
- 如何写上网代理服务程序(就象wingate)???
- 专家们:在线等待!
- Delphi中ln关键字是哟什么用啊
- 请问怎样往一个文本文件里写入数据?
- 急!RichEdit!
SendText多多少
ReceiveText就接收多少
除非你有多个客户端
aaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbb
的格式,跟楼上说的一样,如果你是多个户端的话,那就是山门的那种结果
如果是在一台机器上连续两次使用SendText发送命令的话,
实际上TCP包是直接被封装成了aaaaaaaaaaaaaabbbbbbbbbbbbbbb;
因为,无论是TCP包还是UDP包,在传输封包的过程中始终是一个buffer!
如果在很短的时间内连续的发包,TClientSocket的低层封包就已经将
前后两条命令封装在一起了,就形成了你最后看到的aaaaaaaaaaaaaabbbbbbbbbbbbbbb
Socket.SendText('bbbbbbbbbbbbbb'+#10);如果确实需要换行,就手工加个换行符
那个#0只是结束标志,不会被发出
TcpClient1.Receiveln()
TcpClient1.Sendln()