检查是否准备接受Basic_Socket_Acceptor
Check if basic_socket_acceptor is ready to accept
我正在使用网络TS编写一个简单的单线TCP服务器。为了接受传入的连接,我创建std::experimental::net::ip::tcp::acceptor
并调用accept
成员函数。但是如果没有连接可以接受,我不想要它。我如何检查受体是否准备接受?
显然,如果有一个最终调用select
的函数,它将暴露出竞赛条件。正确的方法是将受体设置为非阻滞。
std::experimental::net::io_context context;
std::experimental::net::ip::tcp::acceptor acceptor{context,
std::experimental::net::ip::tcp::endpoint{
std::experimental::net::ip::tcp::v4(), 1234}};
acceptor.non_blocking(true);
std::error_code error;
while (true)
{
auto socket = acceptor.accept(error);
if (!error)
{
// Handle incoming connection
}
// Do other stuff
}
相关文章:
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- C/C++:socket() 创建在循环中失败,打开的文件太多
- 这是 basic.def.odr 部分的缺陷吗?
- 不将数据 socket.io c++(客户端)发送到 nodejs(服务器)socket.io
- 通过 Tor 服务C++ socket.io 客户端
- 未定义的对象(〔basic.life〕/8):为什么允许引用重新绑定(和常量修改)
- 操作系统 (Linux) 在使用 boost::asio::generic::raw_protocol::socket
- Make zmqpp::socket::connect a std::future
- 为什么可以重复使用这个boost::asio::tcp::socket
- 如何从 boost::asio::ssl::stream<boost::asio::ip::tcp::socket> 获取本机套接字文件描述器?
- Socket.io客户端C++,从Socket.on获取数组
- C++标准在[basic.scope.hiding]中"same scope"到底意味着什么?
- 调用socket.remote_endpoint(提升 asio 库)线程安全性
- 如何使用已经存在的 tcp::socket 创建 tcp::iostream?
- 节点.js到 c++ 客户端:不接收来自 socket.emit 的消息
- 将 std::bind 应用于带有参数 <boost::asio::ip::tcp::socket> 时出错?
- 为什么我们需要 [basic.scope.class]/2?
- [basic.lookup]/1 中最后一句话是什么意思?
- 我可以在不包含 <sys/socket.h> 的情况下使用 C 套接字吗?
- 如何使用C 在socket.io中接收数据