獲取本機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...