boost asio TCP 服务器必须绑定到 IP 地址?
boost asio TCP server must bind to an IP address?
我不确定自己是否正确使用了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
。那是 "wildcard",它在所有接口上侦听任何传入连接。
如果您绑定到 127.0.0.1
,您的服务器将仅接受通过回送的传入连接,这将不允许您的客户端连接(因为您的客户端未使用回送)。
您可以像这样创建一个端点来侦听任何 IP:
boost::asio::ip::tcp::endpoint ep(boost::asio::ip::tcp::v4(), listen_port );
我不确定自己是否正确使用了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
。那是 "wildcard",它在所有接口上侦听任何传入连接。
如果您绑定到 127.0.0.1
,您的服务器将仅接受通过回送的传入连接,这将不允许您的客户端连接(因为您的客户端未使用回送)。
您可以像这样创建一个端点来侦听任何 IP:
boost::asio::ip::tcp::endpoint ep(boost::asio::ip::tcp::v4(), listen_port );