还是UDP情况下 完成端口的问题。

yhlovehx 2009-04-11 04:30:12
我用WSARecvFrom 投递一个接收指定端口和IP的 IO请求
我想问的是 是接收到指定端口和IP的数据后 GetQueuedCompletionStatus才返回
还是 只要有指定大小的数据后 GetQueuedCompletionStatus 就返回?
...全文
64 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓉城浮世 2009-04-12
  • 打赏
  • 举报
回复
UDP中不能针对某个指定客户端进行接受, sockaddr是在接受到消息后,再用发消息的客户端地址进行填充的.

在msdn中可以看到 WSARecvFrom中的sockaddr参数被标记为[out], 意味:只是输出

所以在接受到任何客户端的消息后立即返回, 更详细点是缓冲区中有了数据后立即返回,不论客户端是谁,也不管数据是否接受到了指定大小
yhlovehx 2009-04-12
  • 打赏
  • 举报
回复
问题的关键是wsarecvfrom的 源地址参数是 阻塞情况下 函数返回后填充的
貌似 在那里参数里制定某个地址 是没作用的吧?
我测试的结果是 不管是那个IP发数据过来 GetQueuedCompletionStatus都返回
jxtaoran1234567 2009-04-11
  • 打赏
  • 举报
回复
接收到东西就返回。楼主你那个有数据是什么意思
你既然指定了端口和IP 当然只有是那个IP的对方发送了东西到你指定的端口 这个函数才会有返回值。
yhlovehx 2009-04-11
  • 打赏
  • 举报
回复
自己顶一下

18,356

社区成员

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

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