一个IOCP socket的问题

66i88 2017-07-28 12:47:53
IOCP + acceptex + socket重用。

连接客户端完成后,重设socket , 重新投递,当新连接请求时,socket 是最后投递的那个。
比如socket 最开始先后依次投递3个,编号是 111,222,333.
当连接请求来到时,首先连接的是333,用完后重设投递333,当又一个新连接请求来到时,连接的还是333,
开始那两个111,222根本就没用了。

那是不是IOCP其实只需要一个客服socket就够了?
即使为了应付同时多个请求,开几个线程就只需要几个用于接收客户的socket 就行了吗?

谢谢。
...全文
174 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenyi0106 2017-07-31
  • 打赏
  • 举报
回复
为了高效,IOCP会尽量重用上一次使用的资源,比如调度线程,资源句柄等。 但是,如果上次的资源没有释放,就会使用新的资源。 你这明显是上一次的资源已经释放了,所以IOCP会直接使用上一次的资源,以便提高效率
赵4老师 2017-07-31
  • 打赏
  • 举报
回复
oyljerry 2017-07-31
  • 打赏
  • 举报
回复
一般是一个socket跟一个连接的客户端建立连接。只不过你可以用线程池或者io多路复用来处理这些socket
worldy 2017-07-30
  • 打赏
  • 举报
回复
sock数量和线程无关,和连接数量有关,每个新的ip接入,都会调用WSAAccept,创建返回一个和客户连接有关的sock
Eleven 2017-07-29
  • 打赏
  • 举报
回复
如果客户端不多的话,一个线程对应一个也是可以的,或者使用其他的非阻塞的IO模式
xian_wwq 2017-07-28
  • 打赏
  • 举报
回复
iocp是针对10k并发连接的 只用一个客户端测试实际意义并不大

18,356

社区成员

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

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