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日

相关文章

  • CentOS 添加环境变量的三种方法(图文教程)

    下面是“CentOS 添加环境变量的三种方法(图文教程)”的完整攻略: 1. 编辑 profile 文件 步骤如下: 打开一个终端,输入以下命令进入 root 用户: su – 输入 root 用户的密码,按下回车键进行确认。 进入 /etc 目录,找到 profile 文件: cd /etc 使用文本编辑器(如 vim)打开 profile 文件: vim…

    other 2023年6月27日
    00
  • Android开发框架之自定义ZXing二维码扫描界面并解决取景框拉伸问题

    当在Android应用程序中使用ZXing库自定义二维码扫描界面并解决取景框拉伸问题时,可以按照以下完整攻略进行操作: … 首先,在build.gradle文件中添加ZXing库的依赖。 implementation ‘com.google.zxing:core:3.4.1’ implementation ‘com.journeyapps:zxing-a…

    other 2023年9月5日
    00
  • java实现租车系统

    Java实现租车系统攻略 1. 项目背景 随着生活和科技的发展,人们对出行方式的需求越来越多样化,其中租车已成为越来越多人的选择。本项目旨在设计并实现一个租车系统,允许用户通过网站进行在线租车或退车、查询车辆信息、预订等功能。 2. 实现过程 本项目使用Java语言进行开发,并采用B/S架构(即浏览器-服务器架构),简单介绍一下具体实现流程: 2.1. 确定…

    other 2023年6月26日
    00
  • php如何获取一个json文件

    PHP如何获取一个JSON文件 在Web开发中,JSON是一种被广泛使用的数据交换格式。在PHP中,我们可以使用一些函数和类来获取JSON文件,并将其解析为PHP数组或对象,然后进行数据处理,这就需要使用到PHP提供的标准库和扩展。 使用file_get_contents函数获取JSON文件 file_get_contents 函数可以帮助我们获取一个文件的…

    其他 2023年3月28日
    00
  • js操作select控件的几种方法

    关于js操作select控件的几种方法,我将为您提供一个完整的攻略。具体内容如下: 一、获取select控件 要想对select控件进行操作,首先我们需要获取到这个控件。获取select控件有两种方法: 1.1 通过ID获取 如果我们在html中给select控件定义了一个唯一的ID属性,那么我们就可以通过document.getElementById()方…

    other 2023年6月27日
    00
  • Android Binder进程间通信工具AIDL使用示例深入分析

    Android Binder进程间通信是Android系统中非常重要的一部分,AIDL是Android Interface Definition Language的缩写,是用来描述服务器进程和客户端进程之间通信接口的一种语言。本文将详细讲解如何使用AIDL实现进程间通信,并提供两个示例说明供读者参考。 一、AIDL概述 AIDL是Android系统中基于Bi…

    other 2023年6月27日
    00
  • Android原生态实现分享转发功能实例

    Android原生态实现分享转发功能实例攻略 介绍 在Android应用中实现分享转发功能是一项常见的需求。本攻略将详细介绍如何使用Android原生态实现分享转发功能,并提供两个示例说明。 步骤 步骤一:添加分享按钮 首先,在你的布局文件中添加一个分享按钮,可以使用ImageButton或者ImageView来实现。例如: <ImageButton …

    other 2023年9月7日
    00
  • JavaScript中进制之间的转换

    JavaScript 中进制之间的转换 在JavaScript的开发中,我们经常需要进行进制之间的转换,例如将一个十六进制数转化为整型数,或者将一个十进制数转化为二进制字符串。本文将介绍在JavaScript中如何进行进制之间的转换。 二进制转其他进制 二进制转十进制 将一个二进制数转化为十进制数,可以使用parseInt函数,具体实现如下: const b…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部