use*_*498 3 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());
Run Code Online (Sandbox Code Playgroud)
它绑定到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 );
Run Code Online (Sandbox Code Playgroud)