【发布时间】:2017-12-16 22:22:48
【问题描述】:
我正在使用Networking TS 编写一个简单的单线程 TCP 服务器。为了接受传入的连接,我创建std::experimental::net::ip::tcp::acceptor 并调用accept 成员函数。但是如果没有连接可以接受,它会阻塞,我不希望这样。如何检查 acceptor 是否准备好接受?
【问题讨论】:
-
我不习惯使用实验性功能,但是在好的旧套接字 API 中,可以使用 select 来了解正在侦听的套接字是否有挂起的连接。实验性的 C++ API 可能有一个方法。
-
我猜你使用的 API 是基于 boost::asio?如果是这样,我希望也会有一个asynchronous version of
accept。 -
@SergeBallesta 是的,我知道。
-
@G.M.但这不需要一个单独的线程来等待新的连接吗?我想让事情尽可能简单,并且只使用一个线程。
-
不一定。底层实现很可能使用
select系统调用(如@SergeBallesta 所暗示的那样)。您能否提供有关您要实现的目标的更多信息。或者,更好的是,提供一个复制问题的minimal reproducible example。
标签: c++ sockets networking