- 主题:问大家一个关于IP地址存储的问题
struct in_addr; 和struct in6_addr; 用来保存IPv4和IPv6地址,一般写程序的时候对于保存的IP地址有字节序的约定吗?
我印象中应该都是约定成以网络字节序保存的,但是看netinet/in.h头文件貌似也没看到这个说明。我们维护的一个项目里,估计是不同的开发写的吧,有的地方是以网络字节序保存,有的地方又是以主机(小端)字节序保存,搞得很混乱。我想趁着开发新功能,把这一块都统一一下,全部约定成以网络字节序保存,大家觉得应该不应该这么做?
--
FROM 183.221.18.*
外发到socket中的用网络字节序。
本地内存存储的看需要。如果要比较IPv4地址的范围,主机序是合适的。
--
FROM 222.130.138.*
发出去是用的网络字节序,关键是本地存储,模块内部互发的时候有的用网络字节序,有的用的主机字节序,到最后要用网络字节序发出去的时候需要从源头,中间赋值的地方挨个挨个的查,很麻烦。另外IPv6地址一般是怎么存的?
【 在 z16166 的大作中提到: 】
: 外发到socket中的用网络字节序。
: 本地内存存储的看需要。如果要比较IPv4地址的范围,主机序是合适的。
--
FROM 183.221.18.*
取决于存在本地干了些什么
如果IP(v4)存在本地为了比较大小(范围),主机序优于网络序
如果IP(v4)存在本地只是为了转成字符串、封包发出去,网络序优于主机序
【 在 flyren911 的大作中提到: 】
: 发出去是用的网络字节序,关键是本地存储,模块内部互发的时候有的用网络字节序,有的用的主机字节序,到最后要用网络字节序发出去的时候需要从源头,中间赋值的地方挨个挨个的查,很麻烦。另外IPv6地址一般是怎么存的?
:
--
FROM 222.130.138.*