我正在使用boost::asio通过TCP编写服务器。我正试图找到一种方法来阻止localhost之外的连接。我发现的只有this。有:
boost::asio::ip::host_name()
返回“tomasz-lenovo-ideapad-Y530”(这是我机器的名称)。如何从中获取原始ip(“127.0.0.1”或“localhost”)?
答案 0 :(得分:11)
从提供给定连接的套接字对象。
std::cout << "Peer IP: " << socket.remote_endpoint().address().to_string() << std::endl;
仅供参考:如果你想阻止来自其他机器的任何连接,它足以监听127.0.0.1并且不会监听其他接口。要做到这一点,你应该创建这样的接受器:
acceptor(io_service, ip::tcp::endpoint(ip::address::from_string("127.0.0.1"), "5555"));
这将仅在端口5555上侦听127.0.0.1