什么是in_addr?

doi*_*tin 4 php

在查看PHP手册中的返回值inet_pton和参数时inet_ntop,它指的是in_addr两种情况.

快速搜索引导我到MSDN开发中心这个答案:

in_addr结构表示IPv4 Internet地址.

但这仍然无法解释"结构"究竟是什么.当使用inet_pton(使用随机IP 219.225.174.153)测试返回值时,我会返回奇怪的字符,例如€·Æô.

那么in_addrPHP和MSDN 的"结构"究竟是指什么?

Sam*_*tch 5

inet_pton()将人类可读的IP地址转换为用于网络操作的4字节二进制字符串,通常涉及原始套接字.那些"奇怪的字符"是数字219,225,174和153的ASCII字符表示,可能会或可能不会反转它们的字节顺序以反映系统的"字节序".

每个IPv4地址本质上都是一个32位无符号整数,我们通过将它分成4个独立的8位数[0到255]来创建一个易于理解的数字表示,用于所谓的"点分四元组"表示法.

点四边形的例子

我建议查看和/或使用ip2long(),long2ip()如果您只是在寻找更有效的IP地址数据存储,而不是原始网络编程.

  • 注意,函数`ip2long()`和`long2ip()`不适用于ipv6地址,其中如果php是使用ipv6支持构建的,那么`inet_pton()`和`inet_ntop()`可以同时使用ipv4和ipv6地址启用. (2认同)