完成端口投递0字节WsARecv的问题

littlebao 2008-12-16 01:56:58
完成端口下投递0字节的WSARecv得到完成通知后是用重叠的WSARecv还是recv接受到达的数据?
如果数据达到后用WSARecv接受会产生什么问题?
一般都把完成端口模式比作快递邮件,就是你告诉快递公司有邮件了直接送到你家里,
如果是投递0字节的WSARecv得话是不是相当于你告诉快递公司有邮件了打电话通知你,然后你自己再亲自去取呢?
如果数据到达了用wSARecv接受是不是在接受数据后还会投递一个接受请求呢?
...全文
225 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
littlebao 2008-12-16
  • 打赏
  • 举报
回复
测试了下数据到达后投递重叠的WSARecv接受完数据后确实会使得GetCompletionStatus线程返回。并且GetCompletionStatus的参数值BytesTransferred和WSARecv一致。
littlebao 2008-12-16
  • 打赏
  • 举报
回复
有没有人解析下如果数据到达了投递重叠的WSARecv会怎么样呢?
CodeProject-Jerry 2008-12-16
  • 打赏
  • 举报
回复
recv


这种方式是降低未分页内存池的使用来提高系统总容量

yelangweiwang 2008-12-16
  • 打赏
  • 举报
回复
能否设为volatile 类型的,这样就不需要你自己判断了
caitian6 2008-12-16
  • 打赏
  • 举报
回复
mark
littlebao 2008-12-16
  • 打赏
  • 举报
回复
是没有必要,但是我想知道这样做会怎么样?
我试了好像GetCompletionStatus的线程还会被通知多一次。如果用recv就没有错。
GDI_GTK 2008-12-16
  • 打赏
  • 举报
回复
那还有必要使用WSARecv重叠接收吗?

阻塞recv即可.
littlebao 2008-12-16
  • 打赏
  • 举报
回复
但是如果数据到达了再投递WSARecv会怎么样呢?
lijianli9 2008-12-16
  • 打赏
  • 举报
回复
我理解的WSARecv的作用是在投递一次IO请求,至于返回多少数据是GetQueuedCompletionStatus返回得到的,而且返回的数据都在GetQueuedCompletionStatus
返回的参数中携带了。

18,356

社区成员

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

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