boost asio TCP服务器必须绑定到IP地址吗?

时间:2015-06-13 13:59:01

标签: c++ boost tcp boost-asio

我不确定我是否正确使用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?

感谢。

2 个答案:

答案 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 );