簡體   English   中英

我需要幫助來了解GetIpAddrTable和接口廣播地址

[英]I need help understanding GetIpAddrTable and the interface broadcast address

我正在嘗試使用GetIpAddrTablehttps://docs.microsoft.com/zh-cn/windows/win32/api/iphlpapi/nf-iphlpapi-getipaddrtable )來收集接口地址,但是我在努力理解響應對於dwBCastAddr

對於我的網絡,該接口的廣播地址應為192.168.1.255dwBCastAddr返回的所有內容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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM