欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c# 獲得本地ip地址的三種方法

 更新時間:2020年12月18日 08:54:40   作者:波多爾斯基  
這篇文章主要介紹了c# 獲得本地ip地址的三種方法,幫助大家更好的理解和實(shí)用c#,感興趣的朋友可以了解下

網(wǎng)上有很多種方法可以獲取到本地的IP地址。一線常用的有這么些:

枚舉本地網(wǎng)卡

using System.Net.NetworkInformation;
using System.Net.Sockets;

foreach (NetworkInterface netif in NetworkInterface.GetAllNetworkInterfaces()
 .Where(a => a.SupportsMulticast)
 .Where(a => a.OperationalStatus == OperationalStatus.Up)
 .Where(a => a.NetworkInterfaceType != NetworkInterfaceType.Loopback)
 .Where(a => a.GetIPProperties().GetIPv4Properties() != null)
 .Where(a => a.GetIPProperties().UnicastAddresses.Any(ua => ua.Address.AddressFamily == AddressFamily.InterNetwork))
 .Where(a => a.GetIPProperties().UnicastAddresses.Any(ua => ua.IsDnsEligible))
)
{

 Console.WriteLine("Network Interface: {0}", netif.Name);
 IPInterfaceProperties properties = netif.GetIPProperties();
 foreach (IPAddressInformation unicast in properties.UnicastAddresses)
  Console.WriteLine("\tUniCast: {0}", unicast.Address);
}

獲得的信息比較全面,相當(dāng)于網(wǎng)卡的信息都能獲取,但是不能區(qū)分虛擬網(wǎng)卡(比如docker)。

嘗試連接一個IP地址

string localIP;
using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, 0))
{
 socket.Connect("8.8.8.8", 65530);
 IPEndPoint endPoint = socket.LocalEndPoint as IPEndPoint;
 localIP = endPoint.Address.ToString();
}
Console.WriteLine(localIP);

可以避免虛擬網(wǎng)卡,但是對于內(nèi)網(wǎng)地址,不一定適用,同時要求網(wǎng)絡(luò)必須在線,并且有其他服務(wù)器可以進(jìn)行連接。

借用DNS解析

using System.Net;

string sHostName = Dns.GetHostName();
IPHostEntry ipE = Dns.GetHostEntry(sHostName);
IPAddress[] IpA = ipE.AddressList;
for (int i = 0; i < IpA.Length; i++)
{
 Console.WriteLine("IP Address {0}: {1} ", i, IpA[i].ToString());
}

IPAddress還可以繼續(xù)通過篩選IPv4的方法進(jìn)行更精確的選擇,和第一種方法是類似的。操作方法非常簡潔,但是和獲得網(wǎng)卡信息一樣,不能區(qū)分虛擬網(wǎng)卡。

總結(jié)

對于有雙網(wǎng)卡的情況,往往兩個網(wǎng)卡都是有效的IPV4地址,這個時候需要使用方法2通過局域網(wǎng)或者廣域網(wǎng)內(nèi)訪問進(jìn)行區(qū)分。當(dāng)然也可以選擇更為復(fù)雜的方式:在局域網(wǎng)內(nèi)使用廣播服務(wù),然后再抓包確定獲取的網(wǎng)絡(luò)地址。

以上就是c# 獲得本地ip地址的三種方法的詳細(xì)內(nèi)容,更多關(guān)于c# 獲得本地ip地址的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#實(shí)現(xiàn)控制線程池最大數(shù)并發(fā)線程

    C#實(shí)現(xiàn)控制線程池最大數(shù)并發(fā)線程

    這篇文章主要介紹了C#實(shí)現(xiàn)控制線程池最大數(shù)并發(fā)線程的相關(guān)資料,需要的朋友可以參考下
    2016-07-07
  • C#多線程編程Task用法詳解

    C#多線程編程Task用法詳解

    本文詳細(xì)講解了C#多線程編程Task的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • 使用c#實(shí)現(xiàn)微信自動化功能

    使用c#實(shí)現(xiàn)微信自動化功能

    這篇文章主要介紹了使用c#實(shí)現(xiàn)微信自動化,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • 詳解WPF如何在Panel中實(shí)現(xiàn)設(shè)置所有子項間距

    詳解WPF如何在Panel中實(shí)現(xiàn)設(shè)置所有子項間距

    這篇文章主要為大家詳細(xì)介紹了WPF如何在Panel中實(shí)現(xiàn)設(shè)置所有子項間距,本文借鑒了 Qt 中的 Spacing 設(shè)置方法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-10-10
  • C#單例模式(Singleton Pattern)詳解

    C#單例模式(Singleton Pattern)詳解

    這篇文章主要為大家詳細(xì)介紹了C#單例模式Singleton Pattern的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • httpwebreqeust讀取httponly的cookie方法

    httpwebreqeust讀取httponly的cookie方法

    下面小編就為大家?guī)硪黄猦ttpwebreqeust讀取httponly的cookie方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • C#條件語句、循環(huán)語句(if、while)

    C#條件語句、循環(huán)語句(if、while)

    這篇文章主要介紹了C#條件語句、循環(huán)語句(if、while)的用法,學(xué)習(xí)c#的朋友可以參考下
    2014-03-03
  • C#如何在窗體程序中操作數(shù)據(jù)庫數(shù)據(jù)

    C#如何在窗體程序中操作數(shù)據(jù)庫數(shù)據(jù)

    這篇文章主要介紹了C#如何在窗體程序中操作數(shù)據(jù)庫數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • C#圖片處理3種高級應(yīng)用

    C#圖片處理3種高級應(yīng)用

    本文介紹C#圖片處理高級應(yīng)用,這些功能并無多大技術(shù)含量。全部基于.Net Framework類庫完成,代碼中包含了C#圖片處理的一些基礎(chǔ)知識,與大家分享,個人能力有限,不足之處還請及時指正。
    2015-10-10
  • DataGridView不顯示最下面的新行、判斷新增行、刪除行操作

    DataGridView不顯示最下面的新行、判斷新增行、刪除行操作

    這篇文章介紹了DataGridView不顯示最下面的新行、判斷新增行、刪除行的操作方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02

最新評論