socket发送数据长度的问题?菜鸟求助!

dd_dzs 2005-04-05 09:10:07
使用的流模式套接字,WinCE是服务端,WinXp是客户端。当服务端发送的一桢报文超过1460字节时,在客户端经常是分成多桢接收,请问为什么客户端不能一次接受完呢?
...全文
199 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
herman~~ 2005-04-08
  • 打赏
  • 举报
回复
tcp/ip协议:就是传输线路的MTU(最大传输单元)问题
榕树_ 2005-04-05
  • 打赏
  • 举报
回复
无论在应用层上采用什么技术,协议栈本身所采取的动作不会被改变,通常在非阻塞模式下,当协议栈缓冲区写满后数据就会被随后发送,但是否一次将缓冲区中的数据全部发送仍然取决于很多因素,这与协议栈本身采用的算法有关。
榕树_ 2005-04-05
  • 打赏
  • 举报
回复
当然,为了防止网络中突然出现的大量数据,协议栈本身采用了一些算法避免网络拥塞,通常在有数据传送时,首先发送一个较小的数据包,然后再逐步增加,直到网络达到一个稳定的状态,这样就可以保证连接不会被激增的数据拥塞。所以协议栈本身以此发送的数据量取决于自身的算法,这跟当时的网络状态也会具有相关性。
genghb 2005-04-05
  • 打赏
  • 举报
回复
tcp底层实现,客户端应该自己处理多桢的情况,比如在之前先发送数据长度,数据全部接收后再进行后续处理
榕树_ 2005-04-05
  • 打赏
  • 举报
回复
我想这应该取决于wince底层的协议栈实现
husthunter 2005-04-05
  • 打赏
  • 举报
回复
与传输线路的MTU有关
dd_dzs 2005-04-05
  • 打赏
  • 举报
回复
我是刚学着使用socket,对很多东西还不太明白。当我们把桢长降到小于1460(以太网下最有效率的桢长)时,就不会有同样的事情发生。测试过Xp下的接收缓存是8K,Ce下的发送缓存没测,下午试试看是不是小于1460。

4,387

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧