VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1043|回复: 4

请教,在IOCP中,怎么把监听端口也关联上 完成端口

[复制链接]

2

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-1-18 10:00:01 | 显示全部楼层 |阅读模式
我想在 GetQueuedCompletionStatus 调用之后,调用 AcceptEx, 但是总返回 997 (Overlapped I/O operation is in progress)

网上的例子都是抄书抄来的,没看见这样的用法。
请高手帮忙!!
回复

使用道具 举报

0

主题

24

帖子

19.00

积分

新手上路

Rank: 1

积分
19.00
发表于 2020-2-2 13:18:02 | 显示全部楼层
AcceptEx/IOCP?

Platform SDK的Sample目录下有这个这样的例子。
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-10 22:45:01 | 显示全部楼层
楼主想要的功能估计达不到,至少达不到楼主所想象中的那种效果,不过AcceptEx是一个一个有序提交的,只是有两种,一种是连接上立即返回,即设置等待接收的缓冲区为0,另一种则是等待有数据了才返回,建议楼主使用不等待接收,这样子AcceptEx就会只要有连接到来就触发完成事件,然后把Accept操作交给线程,而收到这个完成事件的线程立即开启一个新的AcceptEx,如此基本上可以达到楼主所想要的目的,并且AcceptEx可以同时提交多个请求(关键看是否有必要,如果瓶颈在于对新连接的Accept当中,则可以考虑增加AcceptEx的数量).
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-15 14:30:01 | 显示全部楼层
CreateIoCompletionPort(THandle(sListen),hCompletion,DWORD(0),0);

AcceptEx(sListen,pBuffer^.sClient,pBuffer^.buf,pBuffer^.nLen-((sizeof(TSockAddrIn)+16)*2),sizeof(TSockAddrIn) + 16,sizeof(TSockAddrIn) + 16,dwBytes,@pBuffer^.ol)
回复

使用道具 举报

2

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-8-19 21:00:01 | 显示全部楼层
感谢各位的回复,问题解决了。基本上 AcceptEx 和 WSARecv/WSASend 一样,可以投递 n 次, 然后等消息。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表