详解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/n/334518.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
TDJINTDJIN
上一篇 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

发表回复

登录后才能评论