c++ - 使用 htonl() 使用 C++ 正确转换本地主机

标签 c++

我有如下定义:

#define LOCALHOST            2130706433

在使用 sockaddr_in 时,我正在尝试更正网络/主机字节顺序:

struct sockaddr_in src;
src.sin_port = htons(0);
src.sin_family = AF_INET;
src.sin_addr.s_addr = htonl( LOCALHOST );

如果我将 src.sin_addr.s_addr 打印到标准输出,我看到的是 1.0.0.127,这似乎排序不正确。

这样做的正确方法是什么?

最佳答案

十进制的

2130706433 是十六进制的 0x7f000001,所以这在网络字节顺序中已经是 127.0.0.1。

如果您在 Intel x86 平台上使用 htonl(),由于 x86 是小尾数法,htonl() 最终会反转位。

关于c++ - 使用 htonl() 使用 C++ 正确转换本地主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39460263/

相关文章:

c++ - 如何将 MySQL 数据库连接到 C++ 代码?

c++ - 为什么这两种情况给出相同的结果?

c++ - 为什么使用 Mutable 关键字

c++ - 将成员函数指针设置为空闲函数指针

c++ - 当可见性状态改变时通知 Qt Window

C++ 试图从 std::function 获取函数地址

c++ - 在多线程程序中禁用 boost::asio 上的线程是否安全?

c++ - 具有特定类型作为泛型参数的 STL 容器

c++ - 如何正确链接用 Haskell 编写的目标文件?

c++ - 从串口mfc读取信息