c 多網絡卡獲取ipv4 ip位址辦法列舉

2021-08-27 15:18:37 字數 1942 閱讀 9551

獲取本機ip本來是很容易的,ipaddress _ip = dns.gethostaddresses(dns.gethostname())[0];就行了

但是在vista win7等系統裡面這樣獲得的是ipv6位址,另外有多張網絡卡的時候問題就更複雜了

以前我都是根據自己的ip修改陣列的下標,不過那樣畢竟不是好的辦法,也不是通用的辦法,用addressfamily來判斷更好

下面我們以win7 筆記本(有無線網絡卡)+多網絡卡(vmware安裝的)和win2003筆記本(有無線網絡卡)+多網絡卡(vmware安裝的)

做測試

(1)其中「測試多個」的是一種很笨的辦法,獲取介面卡的名稱,比如一般都叫「本地連線」,「無線網路連線」,遇到改名字的就無能為力了

(2)「其他辦法1」的是一種簡單的辦法,如果單個網絡卡就走else,兩個網絡卡(不區分網絡卡型別)走if,很傻,但是簡單環境下能用,比第一種好

(3)」其他辦法2「是通過陣列把所有的位址讀取出來放到richtextbox,應該是最全的,都能讀出來

(4)「指定介面類」這個辦法是根據網絡卡型別進行區分的,一般我們上網的網絡卡就是乙太網卡和無線網絡卡,這個都能獲取。網絡卡型別說明

(5)如果要具體到某乙個的話建議寫個掃瞄器吧。

using system;

using system.collections.generic;

using system.collections.specialized;

using system.componentmodel;

using system.data;

using system.drawing;

using system.linq;

using system.net;

using system.net.networkinformation;

using system.net.sockets;

using system.text;

using system.windows.forms;

using system.xml;

using system.management;

private void button3_click(object sender, eventargs e)}}

else if (ni.name == "本地連線2")}}

else if (ni.name == "無線網路連線")}}

}}private void button4_click(object sender, eventargs e)//簡單的辦法,如果單個網絡卡就走else,兩個網絡卡(不區分網絡卡型別)走if

else

}public void showip()

return;

}public string getlocalipv4()

string iparray = new string[ipcollection.count];

ipcollection.copyto(iparray, 0);

return iparray;

}catch (exception ex)

return null;

}private void button5_click(object sender, eventargs e)

private void button7_click(object sender, eventargs e)

private void button6_click(object sender, eventargs e)

}else if (adapter.networkinte***cetype == networkinte***cetype.wireless80211)

}} }}

}

IPV4 IP位址分類 入門到精

ipv4 32個位元組成分為2部份 1 網路號碼 2 主機號碼 ip位址分成五類,用字母表示 a 類位址 網路 主機 主機 主機 1 127 1.0.0.0 126.0.0.0 8 3a類位址 可用主機 2 2 16777214 臺 127.0.0.0 回環主機位址,保留位址,lookback 用來...

NexusPHP支援雙棧協議(ipv4 ipv6)

關於如何架設pt請參考 nexusphp架設pt服務站點教程 sockres pfsockopen ip,port,errno,errstr,5 if sockres else 我檢視了php參考手冊pfsockopen函式,這裡只能對ipv4支援,如果要支援ipv6可以改成如下形式 if strl...

Python獲取本機IP(多網絡卡)

python獲取本機ip位址的一般方法為 1 2 3 importsocket ip socket.gethostbyname socket.gethostname 通過gethostname獲取主機名,再用gethostbyname將主機名轉換為ip位址。那麼,問題來了。如果主機有多個網絡卡 ip...