我宣布以下变量
unsigned long dstAddr; unsigned long gateWay; unsigned long mask;
这些变量包含网络字节顺序的ipaddresses.因此,当我尝试使用inet_ntoa函数为掩码变量打印点符号时,它有时会打印奇怪的值.下面的代码在while循环中...循环n次.
printf("%s\t%s\t%s\t",inet_ntoa(dstAddr),inet_ntoa(gateWay),inet_ntoa(mask)); 192.168.122.0 0.0.0.0 0.255.255.255
但它应该是
192.168.122.0 0.0.0.0 255.255.255.0
我打印了变量的十六进制值,它显示..
007aa8c0 00000000 ffffff00
这是因为inet_ntoa ??
实际上我试图通过NETLINKS从内核中的254路由表中获取声明变量的值.我想我仍然应该使用inet_ntoa函数将值转换为点表示法.??
唯一有意义的是,您对网络字节顺序中所有地址的假设是不正确的.