织梦CMS - 轻松建站从此开始!

罗索

整理高性能网络编程邮件列表问题IOCP中WSASend的问题

罗索客 发布于 2008-07-25 20:47 点击:次 
在完成端口中,在向某个socket发送数据时,调用wsasend函数,假设我本次要发送的是1024字节的数据,调用wsasend返回实际发送的字节数是小于1024时,是在立即在这里继续调用wsasend函数继续发送,还是在GetQueuedCompletionStatus函数里面来继续发送?
TAG:

问题:

在完成端口中,在向某个socket发送数据时,调用wsasend函数,假设我本次要发送的是1024字节的数据,调用wsasend返回实际发送的字节数是小于1024时,是在立即在这里继续调用wsasend函数继续发送,还是在GetQueuedCompletionStatus函数里面来继续发送?因为我要发送的数据,都是在重叠结构里,这里流程我还不是很清楚,望兄弟们解释一下

回复:

1.首先,在重叠IO中,你说的问题应该不存在.
WSASend发送后,要么数据都发送出去了.要么就返回WSA_IO_PENGING错误.
2.如果你还是担心的话.那么你说的两个地方都可以发送
但每发送一次,都要用不同的缓存区,并把没发送完的数据copy到新的缓存区,再发送
(在实际应用中,就是取一个新的PER_IO_DATA,也就是你说的包含WSAOVERLAPPED的那个数据结构)


补充:第二点非常重要,就是每发送一次,都需要使用不同的缓冲区,对于开发中,就是要新的Overlap结构,里面包含了一个HEvent句柄。

(ixmy)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200807/7085.html]
本文出处:网络博客 作者:ixmy
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容