0
问题:


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




回复:

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



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


Tags: , , | 引用(0)
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]