关于IOCP是如何识别数据类型来进行发送和接受之类的操作

砍柴君 2013-03-24 09:55:12
看到有个代码中用IOCP中通过GetQueuedCompletionStatus( lp_this->m_h_iocp, &dwBytes, (LPDWORD)&lp_key, &lp_ov, INFINITE );来等待数据,然后通过
switch(lp_io->operation )
{
case IOCP_ACCEPT:
break;
case IOCP_READ:
break;
case IOCP_WRITE:
break;
}
代码识别数据判断是该采用IOCP_ACCEPT、IOCP_READ、IOCP_WRITE操作中的哪个;
想请问lp_io->operation这里的值服务器是怎么得到的;因为我在客户端那边是用send和recv来对服务端发送和接受数据;没有发送lp_key这个结构,应该是服务端自己发送的,那它在哪里发送的,要怎么发送;用什么东西发送;最好能给个代码,然后对着代码分析;因为看文字有时候有些地方理解不了;谢谢了
...全文
139 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
砍柴君 2013-03-24
  • 打赏
  • 举报
回复
GetQueuedCompletionStatus这个函数是不是一定要跟WSASend、WSARecv函数一起使用,而不能跟Send、Recv函数一起使用? 其实我的问题可以从这里解决 就是找不到用WSASend函数跟用Send函数,以及用WSARecv函数跟用Recv函数,与GetQueuedCompletionStatus配套的区别
砍柴君 2013-03-24
  • 打赏
  • 举报
回复
继续求等 来个大牛 求个解释啊 谢谢啦
砍柴君 2013-03-24
  • 打赏
  • 举报
回复
引用 1 楼 cl_gamer 的回复:
完成key存放一个对象的指针,在投递完成操作的时候,把动作类型封装到这个对象里边。 这样get到完成结果的时候,key转换成对象类型就知道对应的操作了
不太懂你的意思 能给几个代码示范下吗
enic 2013-03-24
  • 打赏
  • 举报
回复
完成key存放一个对象的指针,在投递完成操作的时候,把动作类型封装到这个对象里边。 这样get到完成结果的时候,key转换成对象类型就知道对应的操作了

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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