社区
C++ 语言
帖子详情
boost::asio::ip::tcp::acceptor.accept()如何退出?
gavinr
2012-04-11 04:42:12
用了boost中的同步socket机制,服务线程会阻塞在acceptor.accept调用,也就无法退出线程,怎么才能从这个调用返回呢?
...全文
666
8
打赏
收藏
boost::asio::ip::tcp::acceptor.accept()如何退出?
用了boost中的同步socket机制,服务线程会阻塞在acceptor.accept调用,也就无法退出线程,怎么才能从这个调用返回呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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 下试试.
Socket编程系列之5:
Boost
开发及
ASIO
异步网络聊天室编程实
ASIO
网络编程入门实战Socket编程系列之6:Libuv网络编程入门实战----------------------------------------------------Socket编程系列之5:
Boost
开发及
ASIO
异步网络聊天室编程实战我将大龄大家从
Boost
小白入门基础...
boost
asio
异步服务端实现步骤
(1)首先要初始化一个io_service
boost
::
asio
::io_service iosrv; (2)然后需要用一个iosrv的实例来初始化一个
accep
t
or
boost
::
asio
::
ip
::
tcp
::
accep
t
or
accep
t
or(iosrv); (3)然后需要调用
accep
t
or对象的open函数
boost
::system::error_code ec;
accep
t
or.open(
boost
::
asio
::
ip
::
tcp
::v4(), ec); (4)然后调用acce
boost
::
asio
::
ip
::
tcp
::
accep
t
or::async_
accep
t
一直被死循环调用(无错误)问题的处理。
进程的最大文件描述符太小,当进程打开的文件描述符句柄(fd)数量超过,当前进程的 “Max open files”,那么会导致
accep
t
无法获取 session fd 而失败,但它并不产生错误,而此时
TCP
/
IP
连接的三次握手(或 FAST OPEN,单次)已建立连接。查看特定进程的 “Max open files” 值大小,人们可以使用以下的命令。lsof -Pnl +M -p 进程ID | wc -l。lsof -Pnl +M -p 进程ID。确定某个进程打开的文件描述符数量。
boost
::
asio
::
ip
::
tcp
用法详解及示例程序
本文详细介绍了
boost
::
asio
::
ip
::
tcp
的用法,并提供了一个简单的
TCP
服务器示例程序。通过使用
boost
::
asio
::
ip
::
tcp
命名空间中提供的类和函数,开发者可以方便地创建和管理
TCP
连接,实现各种网络应用程序。
boost
::
asio
是一个跨平台的C++网络编程库,其中的
boost
::
asio
::
ip
::
tcp
命名空间提供了
TCP
/
IP
协议的支持。通过使用
boost
::
asio
::
ip
::
tcp
命名空间中提供的类和函数,我们可以轻松地实现更复杂的
TCP
网络应用程序。
boost
库::
asio
库的
TCP
连接以及类详细摘要
asio
库的简明笔记
boost
库作为C++准标准库,特别是类摘要写的极其规范和简明,是一个榜样。 1 头文件 #include <iostream> #include <
boost
/array.hpp> #include <
boost
/
asio
.hpp> using
boost
::
asio
::
ip
::
tcp
; 2
boost
::
asio
::io_service类 负责事件的处理 class io_servie :private nocopyable // 不可拷贝,将
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章