我聲明以下變量INET_NTOA問題
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函數將該值轉換爲點符號.. ??
只是警告,inet_ntoa已棄用 - 您應該使用inet_ntop()或inet_pton()來代替。 – Salami 2010-03-25 06:52:49
inet_ntop()和inet_pton()也不推薦使用,因爲它們不支持IPv6範圍標識符。如果您需要IPv6支持,您應該使用getaddrinfo()和getnameinfo()。 – 2010-03-25 08:00:48
@codingfreak,無論是設置你的面具是錯誤的。根據我的答案,值應該是00ffffff。 – paxdiablo 2010-03-25 08:19:52