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

boost asio TCP server must bind to an IP address?

本文关键字:绑定 IP 地址 asio TCP 服务器 boost      更新时间:2023-10-16

我不确定我是否正确使用了 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.0.0.0 .这是在所有接口上侦听任何传入连接的"通配符"。

如果绑定到 127.0.0.1 ,服务器将只接受通过环回的传入连接,这将不允许客户端连接(因为客户端未使用环回)。

您可以创建一个终端节点来侦听任何 IP,如下所示:

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