Boost Asio总是返回0.0.0.0 IP
Boost Asio always returns 0.0.0.0 IP
我的服务器中有以下代码(分散在构造函数等中,但我忽略了不必要的部分):
using namespace boost::asio;
io_service ioserv;
ip::tcp::endpoint endpoint(ip::tcp::v4(), 1922);
ip::tcp::acceptor acceptor(ioserv, endpoint);
ip::tcp::socket socket(ioserv);
acceptor.accept(socket);
现在我想把我的IP写入控制台。不幸的是,两个
cout << endpoint.address() << endl;
和
cout << acceptor.local_endpoint().address() << endl;
打印
0.0.0.0
如何获取我的机器的IP地址?
你从哪里得到的代码?
试试这个:
#include <boost/asio.hpp>
using boost::asio::ip::tcp;
boost::asio::io_service io_service;
tcp::resolver resolver(io_service);
tcp::resolver::query query(boost::asio::ip::host_name(), "");
tcp::resolver::iterator iter = resolver.resolve(query);
tcp::resolver::iterator end; // End marker.
while (iter != end)
{
tcp::endpoint ep = *iter++;
std::cout << ep << std::endl;
}
看看这个讨论。
默认绑定地址为INADDR_ANY,即0.0.0.0,这意味着套接字将接受通过任何接口的连接。你的代码是完全正确的,只是它不是确定你的IP地址的正确方法。您可以直接通过Sockets API获取,而无需创建套接字。
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 什么时候在C++中返回常量引用是个好主意
- 你能重载对象变量名本身返回的内容吗
- 为什么 Serial.println(<char[]>);返回随机字符?
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 如何获取std::result_of函数的返回类型
- QueryWorkingSet总是返回false
- (C++)分析树以计算返回错误值的简单算术表达式
- 访问者访问变体并返回不同类型时出错
- 如何返回一个类的两个对象相加的结果
- OpenInventor从9.8升级到10.4.2后,GLSL纹理返回零
- lower_bound()返回最后一个元素
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 如何取消对nullptr的屏蔽,返回正确的对象
- Inet_addr()以相反的顺序返回IP的长期
- Boost Asio总是返回0.0.0.0 IP
- 当坏ip提供给CURLOPT_DNS_SERVERS时,Curl返回all ok
- Inet_aton()返回无效IP地址成功
- qt-ip相机流libvlc返回值