【发布时间】:2016-09-12 23:40:08
【问题描述】:
我有如下定义:
#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 似乎订购不正确。
这样做的正确方法是什么?
【问题讨论】:
-
我不得不质疑写 LOCALHOST 定义的人。对该常量使用十进制而不是十六进制简直是奇怪。
-
htonl() (和其他)旨在正确“将多字节整数类型从主机字节顺序转换为网络字节顺序”。对于每个主机。无论主机顺序如何。例如,如果您的主机顺序与网络顺序匹配,宏通常什么都不做。
标签: c++