C 獲取本機位址 IPV4

2021-08-20 10:48:04 字數 1999 閱讀 1696

這些位址是包含所有網絡卡(虛擬網絡卡)的ipv4和ipv6位址。

1 string name = dns.gethostname();

2 ipaddress ipadrlist = dns.gethostaddresses(name);

1

string name =dns.gethostname();

2 ipaddress ipadrlist =dns.gethostaddresses(name);

3foreach (ipaddress ipa in

ipadrlist)

4

若要單單獲取ipv4位址,可以用ipadress.addressfamily 屬性判斷:對於 ipv4,返回 internetwork;對於 ipv6,返回 internetworkv6。

然而如果本機可能有多個ipv4的位址,那如何獲取訪問預設閘道器時使用的網絡卡ip呢。在csdn論壇找到了大神的方法,用的是查詢本機路由表。

可別小看,還是有很多需要考慮的:

1.乙個電腦有多個網絡卡,有線的、無線的、還有vmare虛擬的兩個網絡卡。

2.就算只有乙個網絡卡,但是該網絡卡配置了n個ip位址.其中還包括ipv6位址。

/// /// 獲取當前使用的ip  

///

///

public static string getlocalip()

else

catch (exception)

} }

/// /// 獲取本機主dns

///

///

public static string getprimarydns()

else

} /// /// 執行乙個控制台程式並返回其輸出引數。

///

/// 程式名

/// 輸入引數

///

process proc = new process();

proc.startinfo.filename = filename;

proc.startinfo.createnowindow = true;

proc.startinfo.arguments = arguments;

proc.startinfo.redirectstandardoutput = true;

proc.startinfo.useshellexecute = false;

proc.start();

using (system.io.streamreader sr = new system.io.streamreader(proc.standardoutput.basestream, encoding.default))

//if (!proc.ha***ited)

//

//上面標記的是原文,下面是我自己除錯錯誤後自行修改的

thread.sleep(100); //貌似呼叫系統的nslookup還未返回資料或者資料未編碼完成,程式就已經跳過直接執行

//txt = sr.readtoend()了,導致返回的資料為空,故睡眠令硬體反應

if (!proc.ha***ited) //在無引數呼叫nslookup後,可以繼續輸入命令繼續操作,如果程序未停止就直接執行

string txt = sr.readtoend();

sr.close();

if (recordlog)

trace.writeline(txt);

return txt;

} }

catch (exception ex)

}

另有一種方法通過用ipconfig來獲取:

private void getip()    

linux下獲取本機ip位址,ipv4和ipv6

include include include include include include include include int getip v4 and v6 linux int family,char address,int size if getifaddrs ifap0 for ifa...

IPv4單播位址

ipv4單播位址標識網路中的乙個介面的位置,就像用街道位址標識城市街區的房子一樣。正如乙個街道位址必須能夠標識乙個唯一的住所一樣,ipv4單播位址也必須是全域性唯一的,而且要採用一種統一的格式。1.單播位址的組成 每個ipv4單播位址包括乙個網路id和乙個主機id。l 網路id 又稱網路位址 它是i...

ipv4的私有位址

本文出自 ipv4的位址,有4個8位二進位制數表示,為了表示方便,常常用十進位制數表示,8位的二進位制的範圍是0 255。這樣一共可以有4gb的定址範圍。a 10.0.0.0 10.255.255.255 8 b 172.16.0.0 172.31.255.255 12 c 192.168.0.0 ...