关于clientsocket控件接受较大数据包的问题(100分)

  • 主题发起人 主题发起人 SimonDong
  • 开始时间 开始时间
S

SimonDong

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用clientsocket控件接受来自unix下的socket通讯数据
对方一次发送一个较大的数据包 4-8k
在win98下一切正常,触发了clientsocket控件的read事件。
一次接受完了所有的数据

但是在win2000下出现问题,read事件触发两次,也就是说
分两次才能把数据接受全

请问这是怎么回事,能否一次读完呢?
谢谢
 
你说的问题确实如此,能不能一次读完,要看网络状态.......
我做过一些大文件传输程序,QQ 775033,QQ上讨论
 
两位能把结果贴出来吗?我也很想听听,因为最近也在写这方面的程序。
 
TCP确实如此,但是一般情况下他会尽力发送体积大点的包,(没有禁用N****算法)
你分两次读完数据没有问题,你要一次读完,可以用一个循环,设置一个读入的
大小,把程序捎做修改就行了

 
是啊,不知道它一次能发多大的数据包,能不能请张大侠详细讲解一二?
 
那要看网络的带宽,:)
TCP一次发送多大的数据包,要看接受方的缓存和处理速度,
我最近专门做了测试,和接受方有很大关系
 
触发两次onread并不等于接收了两个包。tcp协议并不限制发送包的大小。接收方的缓存决定接收的次数。
所以很简单,在组件里做一个循环
如果 while sockt.receivelength>0 do
begin
……把接收到的数据合并
end
 
发送的方式有字串和字节哦,对于大量的数据最好按发送字节方式通过缓冲区多线程编程实现
 
多人接受答案了。
 
后退
顶部