Boost Asio TCP服务器必须绑定到一个IP地址吗?

3

我不确定我是否正确地使用了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来说,不需要将其绑定到特定的IP,任何来自任何服务器接口(只要有多个接口)的客户端请求都可以连接到apache2。 有没有办法解决这个问题?还是说我必须修复服务器外部IP? 谢谢。
2个回答

5
您可以创建一个端点来监听任何IP,方法如下:

boost::asio::ip::tcp::endpoint ep(boost::asio::ip::tcp::v4(), listen_port );

5

将绑定到 0.0.0.0。这是监听所有接口的“通配符”,用于接收任何传入连接。

如果绑定到 127.0.0.1,您的服务器仅接受通过回环进行的传入连接,这将无法让您的客户端连接(因为您的客户端未使用回环)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接