首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

关于IOCP有些疑问.麻烦帮忙解答下解决方法

2012-02-21 
关于IOCP有些疑问...麻烦帮忙解答下假设 我一次WSASend一个很大的缓冲区,那么因为网络的原因,可能会一次全

关于IOCP有些疑问...麻烦帮忙解答下
假设 我一次WSASend一个很大的缓冲区,那么因为网络的原因,可能会一次全发出去了,
可以一次只发了一部分.
完成端口是否在两种情况下都会接收到通知?

另外我想问下最小传输单元是多大,就是不会因为网络原因造成只发送一部分的情况

[解决办法]
具体可以看我的博客《IOCP的几点细节》。

一个WSASend调用后会产生3种后果:

1 返回TRUE
2 返回FALSE,GetLastError返回 PENDING
3 返回FALSE,GetLastError返回 非PENDING

1和2都必然会导致产生一个“完成包”,也就是说,必然可以“收到通知”,3不会产生完成包。

你问“是否发了一半也会收到通知?”,答案是肯定的。

在公网上,很容易出现“部分完成”的情况。

最小传输单元与TCP接口没任何关系,并不是说“我只发‘小于最小传输单元’的数据就肯定不会被分段”,因为,TCP会将你的数据重新组合: 比如,你很快地两次发300字节,每一次都小于MTU,但是TCP可能会传输为400和200的两个IP包,所以,你不用考虑这个问题。

热点排行