我设置了以下连接,这可以正常工作。这是侦听(在自由端口)传入消息的更大代码段的一部分。我想要做的是发布uri,以便其他客户端可以连接到此。但是我无法想出endpoint.address()在正在使用的接口上显示为实际IP地址而不是“localhost”的方法。有任何想法吗?
tcp::resolver::query query(address, "");
tcp:: endpoint endpoint = *resolver.resolve(query);
acc.open(endp.protocol());
acc.set_option(reuse_address(true));
acc.bind(endp);
acc.listen();
tcp::endpoint endpoint = acc.local_endpoint() ;
string uri = "tcp://" + endpoint.address().to_string() + ":" + lexical_cast<string>(endpoint.port()) ;
答案 0 :(得分:2)
Boost ASIO无法枚举您计算机的所有界面。解析器查询您的DNS以获取您的IP,这与它可以返回您在其中配置的任何内容不同(即使可以检索到不准确的信息)。
如果要绑定到默认界面。你不需要解决问题。 只需使用以下端点创建套接字:
boost::asio::ip::tcp::endpoint endpoint =
boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(),port);