为什么这个简单的服务器不接受连接?
Why is this simple server not accepting connections?
我刚开始使用boost asio,并操作了我在网上找到的一个简单服务器的代码片段。下面是代码
void OnAccept( const boost::system::error_code & ec, boost::shared_ptr< boost::asio::ip::tcp::socket > sock )
{
if( ec )
{
std::cout << "[" << boost::this_thread::get_id()<< "] Error: " << ec << std::endl;
}
else
{
std::cout << "[" << boost::this_thread::get_id()<< "] Accepted!" << std::endl;
}
}
void RunServer()
{
boost::shared_ptr< boost::asio::io_service > io_service(new boost::asio::io_service);
boost::shared_ptr< boost::asio::ip::tcp::acceptor > acceptor(new boost::asio::ip::tcp::acceptor( *io_service ));
boost::shared_ptr< boost::asio::ip::tcp::socket > sock( new boost::asio::ip::tcp::socket( *io_service ) );
try
{
boost::asio::ip::tcp::resolver resolver( *io_service );
boost::asio::ip::tcp::resolver::query query( "127.0.0.1", boost::lexical_cast< std::string >( 7777 ));
boost::asio::ip::tcp::endpoint endpoint = *resolver.resolve( query );
acceptor->open( endpoint.protocol() );
acceptor->set_option( boost::asio::ip::tcp::acceptor::reuse_address( false ) );
acceptor->bind( endpoint );
acceptor->listen( boost::asio::socket_base::max_connections );
acceptor->async_accept( *sock, boost::bind( OnAccept, _1, sock ) );//Receives only one connection
std::cout << "Waiting for incoming connections n";
while(true)
{
Sleep(400);
}
}
catch( std::exception & ex )
{
std::cout << "[" << boost::this_thread::get_id()<< "] Exception: " << ex.what() << std::endl;
}
}
int main( int argc, char * argv[] )
{
boost::thread server(RunServer);
std::cout << "Press any key to stop..n";
std::cin.get();
return 0;
}
代码不接受连接。我尝试了telnet localhost 7777
,但它不接受连接,有什么建议吗?
您正在启动异步接受,但是您不允许io_service
运行。您需要做一个同步接受或调用call io_service->run()
。相关部分将变为:
std::cout << "Waiting for incoming connections n";
io_service->run();
}
我建议您比较daytime .2—一个同步的TCP日间服务器和daytime .3—一个异步的TCP日间服务器
相关文章:
- 为什么线程不接受此输入?
- 函数不接受 X 参数,函数使用默认参数
- C++ boost::asio::ip::tcp::acceptor 有时不接受连接器?
- B不接受8作为输入的是什么?C++
- C++数组输入不接受一定数量的整数
- C++概念assignable_from不接受 const&-return 运算符=
- 斯堪夫不接受输入
- C++字符数组不接受超过 4 个字符的输入
- CIN不接受C++中带有空格的输入?
- 为什么C++ STL 哈希表 (unordered_map) 不接受向量作为键
- 带有openSSL的libwebsocket服务器不接受连接
- C 套接字服务器不接受任何客户端 /客户端无法连接
- C++ 套接字侦听器 accept() 在发布时不接受连接请求
- MySQL 服务器不接受远程连接
- boost::asio sync server 在第一个连接后不接受连接
- 套接字不接受连接
- 异步服务器不接受连接
- 在Linux上监听套接字连接而不接受调用
- 为什么这个简单的服务器不接受连接?
- DLib - 为什么 start_async() 不接受后台线程中的连接?