boost::asio::ip::tcp::acceptor.accept()如何退出?

gavinr 2012-04-11 04:42:12
用了boost中的同步socket机制,服务线程会阻塞在acceptor.accept调用,也就无法退出线程,怎么才能从这个调用返回呢?
...全文
666 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjb_yd 2012-04-13
  • 打赏
  • 举报
回复
仔细看看asio的实现吧,一定是你使用的方法有问题。
gavinr 2012-04-12
  • 打赏
  • 举报
回复
google了半天,似乎只能加个select了,
gavinr 2012-04-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

收到客户端请求,就返回了
[/Quote]问题是在没有收到客户端请求时,想要退出呢?
gavinr 2012-04-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

把 accept 的那个 socket 给 close 下试试.
[/Quote]
close没有用,试过了
gavinr 2012-04-12
  • 打赏
  • 举报
回复
直接调用socket.close()好像没反应,调用acceptor.close()则acceptor.accept()抛出异常,现在的方法是调用accpetor.native_handle(),取得fd,再调用select
wjb_yd 2012-04-12
  • 打赏
  • 举报
回复
listen socket 被 close 之后,accpet操作会因为失败而返回的。
justkk 2012-04-11
  • 打赏
  • 举报
回复
收到客户端请求,就返回了
www_adintr_com 2012-04-11
  • 打赏
  • 举报
回复
把 accept 的那个 socket 给 close 下试试.

64,637

社区成员

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

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