c# 获得本地ip地址的三种方法

C# 获得本地IP地址的三种方法

在C#中,有多种方法可以获取本地IP地址。下面将介绍三种常用的方法,并提供示例说明。

方法一:使用Dns.GetHostEntry方法

using System;
using System.Net;

class Program
{
    static void Main()
    {
        string hostName = Dns.GetHostName();
        IPHostEntry hostEntry = Dns.GetHostEntry(hostName);

        foreach (IPAddress ipAddress in hostEntry.AddressList)
        {
            if (ipAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
            {
                Console.WriteLine(ipAddress.ToString());
            }
        }
    }
}

上述示例中,我们首先使用Dns.GetHostName方法获取本地主机名,然后使用Dns.GetHostEntry方法获取与主机名关联的IP地址列表。最后,我们遍历IP地址列表,并筛选出IPv4地址(AddressFamily.InterNetwork),并将其打印出来。

方法二:使用NetworkInterface

using System;
using System.Net.NetworkInformation;

class Program
{
    static void Main()
    {
        NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();

        foreach (NetworkInterface networkInterface in networkInterfaces)
        {
            if (networkInterface.OperationalStatus == OperationalStatus.Up)
            {
                IPInterfaceProperties ipProperties = networkInterface.GetIPProperties();

                foreach (UnicastIPAddressInformation ipAddressInfo in ipProperties.UnicastAddresses)
                {
                    if (ipAddressInfo.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                    {
                        Console.WriteLine(ipAddressInfo.Address.ToString());
                    }
                }
            }
        }
    }
}

上述示例中,我们使用NetworkInterface.GetAllNetworkInterfaces方法获取所有网络接口的列表。然后,我们遍历每个网络接口,并检查其操作状态是否为“Up”。对于每个处于活动状态的网络接口,我们获取其IP属性,并遍历其单播IP地址信息。最后,我们筛选出IPv4地址,并将其打印出来。

方法三:使用IPAddress类和NetworkInterface类的组合

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

class Program
{
    static void Main()
    {
        IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());

        foreach (IPAddress ipAddress in hostEntry.AddressList)
        {
            if (ipAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
            {
                NetworkInterface networkInterface = NetworkInterface.GetByAddress(ipAddress);

                if (networkInterface != null && networkInterface.OperationalStatus == OperationalStatus.Up)
                {
                    Console.WriteLine(ipAddress.ToString());
                }
            }
        }
    }
}

上述示例中,我们首先使用Dns.GetHostEntry方法获取本地主机的IP地址列表。然后,我们遍历IP地址列表,并对于每个IPv4地址,使用NetworkInterface.GetByAddress方法获取与之关联的网络接口。最后,我们检查网络接口的操作状态是否为“Up”,并将符合条件的IP地址打印出来。

这些方法提供了多种途径来获取本地IP地址,你可以根据自己的需求选择适合的方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c# 获得本地ip地址的三种方法 - Python技术站

(1)
上一篇 2023年7月30日
下一篇 2023年7月30日

相关文章

  • 零距离感受入侵服务器

    零距离感受入侵服务器攻略 简介 “零距离感受入侵服务器” 是指从网络上不经过任何传输介质直接攻击目标服务器的一种方式,一旦攻击者得手,可以进行非常严重的恶意行为。 攻击方式 攻击者一般会使用以下方法攻击目标服务器: 1. 端口扫描 攻击者通过扫描目标服务器上的端口,尝试寻找某些已知的漏洞,从而危害服务器的安全。 常见的端口扫描工具有nmap和masscan。…

    other 2023年6月27日
    00
  • intellijmaven配置与使用

    IntelliJ IDEA中Maven的配置与使用 Maven是一个流行的Java项目管理工具,它可以帮助开发者自动化构建、依赖管理、测试和部署Java应用程序。IntelliJ IDEA是一个功能强大的Java开发工具,它提供了完整的Maven集成,为Java开发者提供了很大的便利。在本文中,我们将探讨如何在IntelliJ IDEA中配置和使用Maven…

    其他 2023年3月28日
    00
  • 在url中使用/#/是什么意思和实用性?

    在URL中使用/#/是为了实现前端路由,它可以让单页应用程序(SPA)在不刷新页面的情况下更新页面内容。下面是两个示例说明: 示例一:使用/#/实现前端路由 假设我们有一个单页应用程序,其中有两个页面:首页和关于页面。我们可以使用/#/来实现前端路由,使得用户在访问不同页面时,URL地址发生变化,但是页面不会刷新。 例如,我们可以将首页的URL设置为http…

    other 2023年5月8日
    00
  • 计算机意外地重新启动或遇到错误导致系统安装无法继续

    攻略:计算机意外地重新启动或遇到错误导致系统安装无法继续的处理方法 1. 检查硬件设备 在进行系统安装的时候,如果计算机出现意外地重新启动或遇到错误,有可能是由于硬件设备的问题所导致的。因此,我们需要检查硬件设备是否正常。 1.1 内存模块 由于内存模块和硬盘都是比较容易受损的硬件设备,因此,在处理计算机意外地重新启动或遇到错误时,内存模块和硬盘都需要经常检…

    other 2023年6月26日
    00
  • c#ftp上传文件实例代码(简易版)

    以下是详细讲解“C# FTP上传文件实例代码(简易版)”的完整攻略: 什么是FTP? FTP(File Transfer Protocol)是一种用于在上传输文件的标准协议。在 C# 中,我们可以使用 FtpWebRequest 类和 FtpWebResponse 类来实现 FTP 文件上传。 步骤1:创建FTP连接 在上传文件之前,我们需要先创建一个 FT…

    other 2023年5月8日
    00
  • 手把手带你粗略了解Java–类和对象

    手把手带你粗略了解Java–类和对象 在Java中,类和对象是面向对象编程的核心概念。 什么是类和对象 类是一种抽象数据类型,是对现实世界中事物的抽象。对象是类的具体实现,它是类的实例。 在Java中,我们使用关键字class来定义一个类,例如: public class Car { //类的属性 public String brand; public d…

    other 2023年6月26日
    00
  • 让自解压文件在右键中不显示的实现方法

    让我来详细讲解“让自解压文件在右键菜单中不显示”的实现方法。 介绍 自解压文件通常指的是带有解压自身所需程序的可执行文件,使用时只需双击即可自动解压,非常方便。不过,在右键菜单中出现自解压文件会显得有些多余,尤其是对于某些需要隐私保护的文件时更为重要,因此禁止其出现可使文件更安全。 实现方法 实现自解压文件在右键菜单中不显示的方法,我们需要做两件事情: 修改…

    other 2023年6月27日
    00
  • redis启动流程介绍

    Redis启动流程介绍 在介绍Redis启动流程之前,我们先了解一下Redis的架构:1. Redis是一个单线程的数据库,所有的数据都存储在内存中,以保证读写性能。2. Redis使用事件驱动的模型,它使用IO多路复用机制,同时处理多个客户端请求。 Redis启动流程详解 Redis的启动流程主要可以分为以下几个步骤: 1. 加载配置文件 首先,Redis…

    other 2023年6月20日
    00
合作推广
合作推广
分享本页
返回顶部