[英]I need help understanding GetIpAddrTable and the interface broadcast address
我正在嘗試使用GetIpAddrTable
( https://docs.microsoft.com/zh-cn/windows/win32/api/iphlpapi/nf-iphlpapi-getipaddrtable )來收集接口地址,但是我在努力理解響應對於dwBCastAddr
。
對於我的網絡,該接口的廣播地址應為192.168.1.255
但dwBCastAddr
返回的所有內容dwBCastAddr
1
,我不知道該怎么辦。
數據結構的文檔( https://docs.microsoft.com/zh-cn/windows/win32/api/ipmib/ns-ipmib-mib_ipaddrrow_w2k )表示以下內容:
dwBCastAddr
類型:DWORD
網絡字節順序的廣播地址。 廣播地址通常是>主機部分設置為全零或全1的IPv4地址。
GetIpAddrTable函數不會返回此成員的正確值。
他們想在這里說什么?
這是用於獲取廣播地址的行:
IPAddr.S_un.S_addr = (u_long)pIPAddrTable->table[i].dwBCastAddr;
我只是想弄清楚如何從中獲取192.168.1.255。
任何幫助,將不勝感激。
GetIpAddrTable函數不會返回此成員的正確值。
它說,如果你正在使用GetIpAddrTable
,價值dwBCastAddr
是錯誤的,無用的。 所以不要使用它。
相反,您可以自己從IP地址和子網掩碼中計算出廣播地址,如下所示:
IPAddr.S_un.S_addr= pIPAddrTable->table[i].dwAddr | ~pIPAddrTable->table[i].dwMask;
printf("\tBroadCast[%d]: \t%s\n", i, inet_ntoa(IPAddr));
請參閱如何從IP地址和子網掩碼確定網絡和廣播地址? 更多細節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.