WSASend和WSARecv在网络慢时的问题.

iSiwei 2007-10-22 04:10:21
在网络速度慢时,为什么.用WSARecv收WSASend所发出的数据,会减少?网络好是,可以收到正常的数据量.每次发送一般,10K数据.
...全文
121 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
WinEggDrop 2007-11-01
  • 打赏
  • 举报
回复
因为是TCP,那么系统会返回成功发出去了多少.网络不好,带宽阻塞,自然不可能比网络环境好时发得更多和更快了,这个是物理环境的问题,和API无关.
iSiwei 2007-10-22
  • 打赏
  • 举报
回复
是,TCP的.
arong1234 2007-10-22
  • 打赏
  • 举报
回复
所谓减少是啥意思?

如果是TCP,且是接收数据比预期发送的少,原因应该是你没有真正发送出去,或者还没有收完,要注意以下两个问题
1。wsasend不一定会按照你要求把一个buffer里的数据完全发送出去,你需要检查返回值了解它到底发送了多少。
2。一次发送不等价于一次接收,m次发送可能对应于n次WSARecv调用
dmz2922990 2007-10-22
  • 打赏
  • 举报
回复
应该是UDP丢包的问题.
ouyh12345 2007-10-22
  • 打赏
  • 举报
回复
tcp?udp?
tcp保证包的次序和正确性,不会丢包。但网慢时,在路由器端会随机丢包,这样会引起重传,从而加重网络负担,这样,tcp发送端会采取某种策略,减慢发送,从而,在单位时间内,发送和接收的速度变慢。
udp不保证包的次序和正确性,不会重传,网慢时,会丢失很多包

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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