詳解c#獲取本機ip

一、初識獲取本機ip

在許多網絡應用程序中,獲取本機的IP地址是一個關鍵任務。通過C#,我們可以方便地獲取本地系統IP地址。

首先我們需要在C#中引入System.Net命名空間。然後,使用Dns類的GetHostName方法獲取主機名,最後使用GetHostEntry方法返回相應IP地址。

using System.Net;

IPHostEntry hostname = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in hostname.AddressList)
{
    Console.WriteLine(ip);
}

二、獲取多個本機ip地址

如果本機有多個網卡或子網,我們需要獲取所有的IP地址以便做出決策。可以通過枚舉網絡接口來完成。

首先,引入System.Net.NetworkInformation命名空間。然後,通過NetworkInterface類的GetIPProperties方法獲取IP地址和網關信息。最後,獲取IPv4地址列表。

using System.Net.NetworkInformation;

IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties(); 
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in interfaces)
{
    IPInterfaceProperties adapterProperties = adapter.GetIPProperties();       
    foreach (UnicastIPAddressInformation address in adapterProperties.UnicastAddresses)
    {
        if (address.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
        {
            Console.WriteLine(address.Address);
        }
    }
}

三、獲取特定類型的本機ip地址

有時候我們只需要特定類型的IP地址,例如私有IP地址、公共IP地址、IPv4地址等。

要獲取私有IP地址(如192.168.x.x或10.x.x.x),我們可以使用以下代碼:

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

foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
    IPInterfaceProperties properties = ni.GetIPProperties();
    foreach (IPAddressInformation unicast in properties.UnicastAddresses)
    {
        if (unicast.Address.AddressFamily == AddressFamily.InterNetwork && IPAddress.IsPrivate(unicast.Address))
        {
            Console.WriteLine(unicast.Address);
        }
    }
}

要獲取公共IP地址,我們可以使用以下代碼:

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

IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
    if (ip.AddressFamily == AddressFamily.InterNetwork)
    {
        if (!IPAddress.IsPrivate(ip))
        {
            Console.WriteLine(ip);
        }
    }
}

要獲取IPv4地址,我們可以使用以下代碼:

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

foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
    IPInterfaceProperties properties = ni.GetIPProperties();
    foreach (IPAddressInformation unicast in properties.UnicastAddresses)
    {
        if (unicast.Address.AddressFamily == AddressFamily.InterNetwork)
        {
            Console.WriteLine(unicast.Address);
        }
    }
}

四、總結

在本文中,我們學習了在C#中獲取本機IP地址的多種方法,包括獲取主機名、獲取多個IP地址、獲取特定類型的IP地址。希望這些示例代碼能夠幫助您解決與本地IP地址相關的問題。

原創文章,作者:TDJIN,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/334518.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
TDJIN的頭像TDJIN
上一篇 2025-02-05 13:05
下一篇 2025-02-05 13:05

相關推薦

  • Centos7配置靜態ip

    本文將詳細闡述如何在Centos7系統中配置靜態ip。 一、查看網絡接口 在配置靜態ip之前,我們首先需要查看系統中的網絡接口,以確定我們需要配置的網卡是哪一個。 ifconfig…

    編程 2025-04-29
  • Python檢測IP連通

    Python是一門強大的編程語言,常用於網絡開發、數據分析等領域。IP地址是網絡通信的基礎,在網絡通信中,有時需要檢測IP地址是否連通。下面將從多個方面介紹Python檢測IP連通…

    編程 2025-04-28
  • Treck TCP/IP Stack 輸入驗證錯誤漏洞CVE-2020-11901解析

    本文將對Treck TCP/IP Stack 輸入驗證錯誤漏洞CVE-2020-11901進行詳細解析,並提供相關代碼示例。 一、漏洞背景 Treck TCP/IP Stack是一…

    編程 2025-04-27
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分佈式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25
  • Java BigDecimal 精度詳解

    一、基礎概念 Java BigDecimal 是一個用於高精度計算的類。普通的 double 或 float 類型只能精確表示有限的數字,而對於需要高精度計算的場景,BigDeci…

    編程 2025-04-25
  • C語言貪吃蛇詳解

    一、數據結構和算法 C語言貪吃蛇主要運用了以下數據結構和算法: 1. 鏈表 typedef struct body { int x; int y; struct body *nex…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變量讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25

發表回復

登錄後才能評論