C#获取本地IP的四种方式示例详解

下面是针对“C#获取本地IP的四种方式示例详解”的完整攻略。

1. 前言

有时我们需要获取本地机器的IP地址。但是,如果我们不知道如何获取IP地址,就无法对本地IP进行任何操作。在本教程中,我们将学习使用C#编程语言获取本地IP地址的4个方法。

2. 方法一 [GetHostName]

以下是使用C#语言获取本地IP地址的第一个例子:

    string myHost = System.Net.Dns.GetHostName();
    IPHostEntry myIPs = System.Net.Dns.GetHostEntry(myHost);
    foreach (IPAddress myIP in myIPs.AddressList)
    {
        Console.WriteLine(myIP.ToString());
    }

在上述代码片段中,我们首先使用System.Net.Dns.GetHostName()获取了本地机器的主机名,然后使用System.Net.Dns.GetHostEntry()方法来获取关联的IP地址。最后,我们使用 foreach 循环迭代 AddressList 集合,将其转换为字符串并打印到控制台。

3. 方法二 [GetHostAddresses]

第二种方法使用了GetHostAddresses函数,与前面的代码相比,此方法更加简洁。以下是代码:

    string name = Dns.GetHostName();        
    IPAddress[] addressList = Dns.GetHostAddresses(name);
    foreach (IPAddress address in addressList)
    {
        Console.WriteLine(address.ToString());
    }

在上述代码片段中,我们使用Dns.GetHostName()获取本地机器的主机名,并将其存储在变量name中。接下来,我们使用Dns.GetHostAddresses()方法来获取IP地址,该方法使用步骤与前面的方法相同。最后,我们使用 foreach 循环迭代“AddressList”数组,并将其转换为字符串并打印到控制台。

4. 方法三 [LocalIPAddress]

下面我们将介绍一种使用NetworkInterface类的第三种方法,该方法使用LocalIPAddress()函数来获取本地IP地址,代码如下:

    public static string GetLocalIPAddress()
    {
        var netInterfaces = NetworkInterface.GetAllNetworkInterfaces().FirstOrDefault
            (n => n.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || 
            n.NetworkInterfaceType == NetworkInterfaceType.Ethernet);
        if (netInterfaces == null)
            return string.Empty;

        var address = netInterfaces.GetIPProperties().UnicastAddresses.FirstOrDefault
            (u => u.Address.AddressFamily == AddressFamily.InterNetwork);
        return address?.Address.ToString();
    }

在本方法中,我们首先使用NetworkInterface.GetAllNetworkInterfaces()方法来获取本地机器的所有网络接口,然后使用FirstOrDefault函数来获取指定网络接口类型的第一个接口(在此示例中为Wireless 802.11Ethernet)。然后,我们使用GetIPProperties()方法来获取IP属性(如网关地址),然后使用FirstOrDefault函数获取第一个IPv4地址。最后,我们将获取到的IPv4地址转换为字符串并返回。

5. 方法四 [System.Net.Sockets.TcpClient]

最后,我们将介绍使用System.Net.Sockets.TcpClient类的第四种方法。以下是代码示例:

    IPHostEntry host;
    string localIP = "";
    host = Dns.GetHostEntry(Dns.GetHostName());
    foreach (IPAddress ip in host.AddressList)
    {
        if (ip.AddressFamily == AddressFamily.InterNetwork)
        {
            localIP = ip.ToString();
            break;
        }
    }

在此方法中,我们使用Dns.GetHostEntry(Dns.GetHostName())方法来获取主机名,并将其存储在变量host中。接下来,我们使用foreach循环迭代“AddressList”数组,使用if语句检查IP地址的类型是否为InterNetwork。在循环完成后,我们将获取到的IP地址转换为字符串并将其存储在变量localIP中。

6. 结论

以上是获取本地IP地址的四种方法示例。无论您选择哪种方法,都需要根据自己的特定应用场景选择适当的方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#获取本地IP的四种方式示例详解 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • JS模拟实现ECMAScript5新增的数组方法

    下面是JS模拟实现ECMAScript5新增的数组方法的完整攻略。 一、ECMAScript5新增的数组方法 ECMAScript5新增了一些数组方法,这些方法主要是用于对数组进行操作和 manipulation。常见的 ECMAScript5 数组方法包括以下几个: forEach():对数组中的每个元素都执行一次提供的函数。 map():返回一个由原数组…

    JavaScript 2023年5月27日
    00
  • 常见JS前端接口校验方式总结

    接下来我将为您详细讲解“常见JS前端接口校验方式总结”的完整攻略。 常见JS前端接口校验方式总结 1. 基于正则表达式的校验 基于正则表达式的校验是一种常见的前端接口校验方式。 正则表达式提供了一种快速方便的方式,可以用来匹配和验证字符串格式。 比如,如果我们需要验证一个用户名是否符合规则(只包含字母和数字,长度为6~16),可以使用下面的代码: funct…

    JavaScript 2023年5月28日
    00
  • asp.net+js实现批量编码与解码的方法

    以下是“asp.net+js实现批量编码与解码的方法”的完整攻略。 一、背景 在一些网站开发中,可能会遇到需要对一些数据进行批量编码或者批量解码的需求。例如,对于一些包含特殊字符的字符串进行URL编码,或者将经过base64编码的数据进行解码等等。本篇攻略将介绍如何通过asp.net和javascript实现这些功能。 二、URL编码与解码 URL编码 在a…

    JavaScript 2023年5月19日
    00
  • js实现炫酷的烟花效果

    下面是js实现炫酷的烟花效果的完整攻略。 1. 前置条件 在实现炫酷的烟花效果之前,需要对以下技术有一定的掌握: HTML5 Canvas: 用于绘制图形,实现动态效果的关键。 JavaScript: 用于编写控制动画效果的脚本。 CSS3: 用于设置页面布局、动画过渡效果等。 2. 基本思路 实现炫酷的烟花效果,需要基于以下两个基本思路: 生成随机颜色的烟…

    JavaScript 2023年6月10日
    00
  • JS触摸事件、手势事件详解

    JS触摸事件、手势事件详解 什么是触摸事件和手势事件 触摸事件是基于触摸输入设备,如手机屏幕,触发的事件。触摸事件包含以下几种: touchstart:手指触摸屏幕时触发; touchmove:手指在屏幕上滑动时连续触发; touchend:手指离开屏幕时触发; touchenter:手指触摸到一个DOM元素时触发; touchleave:手指离开一个DOM…

    JavaScript 2023年6月11日
    00
  • 向JavaScript的数组中添加元素的方法小结

    向JavaScript的数组中添加元素的方法小结 在JavaScript中,可以使用多种方法向数组中添加元素。下面将对常用的5种方法进行详细讲解。 方法1:使用push()方法 push()方法可以向数组末尾添加一个或多个元素,并返回添加新元素后数组的长度。示例如下: let arr = ["apple", "banana&qu…

    JavaScript 2023年5月27日
    00
  • 一文详解如何使用node执行js文件

    一文详解如何使用node执行js文件 在本篇文章中,我们将会详细介绍如何使用 Node.js 来运行 JavaScript 代码。 Node.js 是什么 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,可以让 JavaScript 代码在服务器端运行。它提供了丰富的内置库和模块,可以轻松地构建高性能、可伸缩的网络应用…

    JavaScript 2023年5月28日
    00
  • 基于JavaScript实现大文件上传后端代码实例

    当今互联网上的许多应用程序都需要处理大文件上传的功能。而为了保证数据传输的稳定和安全,常常需要将文件分割成多个小部分并分别上传。下面是基于JavaScript实现大文件上传后端代码实例的完整攻略。 具体步骤 准备工作: 在前端界面上,需要使用File API来打开本地文件,并在文件上传过程中将其转换为二进制流。 “` “` 在后端代码中,需要使用Node…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部