我正在使用 inet_pton 来验证输入 IP 地址是否有效且不全为零(0.0.0.0 或 00.00.0.0)。
inet_pton(int af, const char *src, void *dst)
如果输入 ip (src) 地址为 0.0.0.0 inet_pton 将 dst 设置为值 0。如果 src 值为 00.00.00.00 ,则 dst 值不为 0,但我为每条路径得到一个随机值。为什么 inet_pton 将 0.00.00.00 转换为值 0
#include <string.h>
#include <arpa/inet.h>
void main( int argc, char *argv[])
{
int s;
struct in_addr ipvalue;
printf("converting %s to network address \n", argv[1]);
s = inet_pton(AF_INET, argv[1], &ipvalue);
if(s < 0)
printf("inet_pton conversion error \n");
printf("converted value = %x \n", ipvalue.s_addr);
}
样品运行
正确值:
./a.out 10.1.2.3
converting 10.1.2.3 to network address
converted value = 302010a
./a.out 0.0.0.0
converting 0.0.0.0 to network address
converted value = 0
不正确的结果:
./a.out 00.00.00.0
converting 00.00.00.0 to network address
converted value = **a58396a0**
./a.out 00.0.0.0
converting 00.0.0.0 to network address
converted value = **919e2c30**