我不确定我是否正确使用BOOST ASIO,我的代码如下,
boost::asio::ip::tcp::resolver resolver(io_);
boost::asio::ip::tcp::resolver::query query(std::string("127.0.0.1"), port);
boost::asio::ip::tcp::endpoint endpoint = *resolver.resolve(query);
acceptor_.open(endpoint.protocol());
它绑定到127.0.0.1。当客户端从外部连接时,客户端使用IP地址192.168.0.107或类似的东西。 BOOST ASIO实现的服务器只是拒绝客户端连接。
那么有办法解决这个问题吗?我认为对于apache2,apache2不需要绑定到特定的IP,任何服务器接口的任何客户端请求(假设有多个接口)都可以连接到apache2。
有办法解决吗?或者没有办法,我必须修复服务器外部IP?
感谢。
答案 0 :(得分:4)
绑定到0.0.0.0
。这是“通配符”,可以侦听任何传入连接的所有接口。
如果绑定到127.0.0.1
,您的服务器将只接受环回的传入连接,这不会让客户端连接(因为您的客户端没有使用环回)。
答案 1 :(得分:4)
您可以创建一个端点来侦听任何类似的IP:
boost::asio::ip::tcp::endpoint ep(boost::asio::ip::tcp::v4(), listen_port );