本地IP與WAN IP是一個定義不明確的概念(充其量)。舉例來說,VPN連接可以爲通過WAN連接的計算機提供「本地」IP地址。
也就是說,基本思想相當簡單。子網掩碼專門用於此目的。您通常從您的本地IP地址開始,並查找其他地址是否爲本地IP地址。要做到這一點,你需要每個地址與子網掩碼and
,比較結果。如果它們不相同,則它們位於不同的子網上。
但是,請注意,機器可能是多宿主機,這意味着它有兩個或更多適配器,其中每個適配器可能位於不同的子網上。所以,你真的想得到所有本地適配器的列表,並檢查每個地址。
這可能意味着也可能不意味着它確實是WAN連接。舉個例子,在一家像樣大小的公司的校園裏,你可能有許多子網,至少在某種程度上都是本地的。
然而,對於一個典型的家庭用戶來說,這將工作得很好。路由器一側的所有東西都將使用本地子網,而路由器另一端的所有東西都會在本地子網外有一些地址。
在C++中,您可以獲取適配器的列表以及GetIpAddrTable
的每個適配器的地址和子網掩碼。
這一切都取決於您使用數字IP地址。如果您有域名,則首先需要先將其解析爲數字IP地址,例如gethostbyname
或getaddrinfo
。
另外請注意,我上面描述的實際上是IPv4。 IPv6排序有一個相似的概念,但細節足夠不同,它幾乎肯定需要單獨的代碼。
謝謝!傑瑞棺材。 – TTGroup