关于Socket的完成端口模型

shicheng521 2005-01-14 04:28:48
在编程中用CreateIoCompletionPort来注册要连接的Socket,当有多个连接申请时,就必须多次来调用这个函数来注册,然后用WSARecv来接受数据。当 GetQueuedCompletionStatus来得到得到完成的状态,然后就可以接受到数据,是这样的吗?连接断开的时候是怎样解除连接的?怎样知道是那个Socket发送过来的数据呢?接受到的数据放在那里了,为什么放在那里?谁有详细的资料或者例子发给我一份,谢谢。
shicheng521@163.com
...全文
146 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
shicheng521 2005-01-17
  • 打赏
  • 举报
回复
OVERLAPPED虽然很重要,但是不用也可以是吗?可以用另外的一个参数CompletionKey也行。
shicheng521 2005-01-15
  • 打赏
  • 举报
回复
谢谢楼上了
shicheng521 2005-01-15
  • 打赏
  • 举报
回复
大家都来发言呀
guonix 2005-01-14
  • 打赏
  • 举报
回复
建议你到codeproject.com去找, 可以找到所有你的问题的解答, 你需要的所有例子代码.

>>>当 GetQueuedCompletionStatus来得到得到完成的状态,然后就可以接受到数据,是这样的吗?

是的, 没错. 说的正确一定应该是: 当GetQueuedCompletionStatus被调用时, 状态发生变化, 可能有数据收到(也可能是其它状态).

>>>连接断开的时候是怎样解除连接的?
closesocket后, 完成端口中相关socket被调用时会返回socket被关闭的消息

>>>怎样知道是那个Socket发送过来的数据呢?
OVERLAPPED看看这个结构, 用它能解决你的问题.

接受到的数据放在那里了,为什么放在那里?
继续看OVERLAPPED, 这个东东很重要.

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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