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

yizhihongxing

下面是针对“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日

相关文章

  • 基于JavaScript实现文件共享型网站

    下面将详细讲解“基于JavaScript实现文件共享型网站”的完整攻略。 前置条件 熟悉HTML、CSS和JavaScript基本知识; 熟悉Node.js开发环境和相关模块。 操作步骤 1. 创建文件夹 首先在本地文件夹中创建一个新的文件夹,命名为“file-sharing-website”。 2. 初始化项目 打开终端,进入到该文件夹中,执行以下命令: …

    JavaScript 2023年5月27日
    00
  • ES6数组的扩展详解

    ES6数组的扩展详解 在ES6中,数组的概念得到了进一步扩展和完善,提供了一些新的方法和语法糖,使得开发人员在对数组进行操作时具有更多的便利性。 扩展运算符 在ES6中,一个新的运算符…被引入,称为扩展运算符(spread operator)。扩展运算符可以将数组展开为一系列的参数,方便我们对多个参数进行操作。 示例1:合并数组 const arr1 =…

    JavaScript 2023年5月27日
    00
  • JS获取各种浏览器窗口大小的方法

    获取浏览器窗口大小是前端开发中常用的操作,可以用来实现响应式布局、动态调整元素大小位置等功能。以下是JS获取各种浏览器窗口大小的方法的攻略: 1. window对象的innerWidth和innerHeight属性 在JS中,可以使用window对象的innerWidth和innerHeight属性,获取当前浏览器窗口的内部宽度和高度,即不包括浏览器的边框和…

    JavaScript 2023年6月11日
    00
  • Js利用console计算代码运行时间的方法示例

    当我们需要测试我们写的代码的运行时间以找到性能瓶颈时,可以使用JavaScript中的console对象来帮助我们计算代码运行的时间。下面是使用console计算代码运行时间的方法示例及其详细攻略: 显式地调用console.time()方法和console.timeEnd()方法 console.time()方法可以起到计时的作用,它需要传入一个唯一的标识…

    JavaScript 2023年5月27日
    00
  • 原生JavaScrpit中异步请求Ajax实现方法

    原生JavaScript中异步请求Ajax实现方法 什么是Ajax Ajax(Asynchronous JavaScript and XML)表示一种创建快速动态网页的技术,可以在不重新加载整个页面的情况下更新部分内容。通过Ajax,可以在网页中使用JavaScript实现异步数据请求和数据处理,从而提高用户体验效果。 原生JavaScript实现Ajax请…

    JavaScript 2023年6月11日
    00
  • js 弹出框只弹一次(二次修改之后的)

    下面是“js 弹出框只弹一次(二次修改之后的)”的完整攻略: 1. 先分析问题 在实现弹出框只弹一次之前,我们需要先分析一下问题出在哪里。可能是因为弹框的逻辑写在了循环体内,导致每次循环都会弹出一个弹框,也有可能是因为没有设置弹框只弹一次的标记,导致每次都会弹出弹框。 2. 解决方案 2.1 将弹框逻辑放到循环体外面 let flag = true; for…

    JavaScript 2023年6月11日
    00
  • 详解JavaScript基于面向对象之创建对象(2)

    首先,你需要了解JavaScript中面向对象编程的概念。在JavaScript中,我们可以通过构造函数和原型链来实现面向对象编程。 第二篇文章“详解JavaScript基于面向对象之创建对象(2)”主要介绍了通过原型链来创建对象的方式。具体内容包括: 原型链是什么? 原型链是一种由多个对象组成的链式结构,这些对象通过原型链相互关联,在其中可以共享属性和方法…

    JavaScript 2023年5月27日
    00
  • js substring()字符串截取函数

    当我们需要对字符串进行截取,只保留某一段字符时,可以使用js的字符串截取函数 substring(). 以下是详细的使用攻略: 函数语法 str.substring(start, end) 参数: start: 表示从哪个位置开始截取,包括这个位置。 end: 表示截取到哪个位置结束, 不包括这个位置 。如果省略,则截取到字符串的末尾。 返回值: 返回截取出…

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