C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析

C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析

概述

在C#中,获取本机IP地址是非常常见的功能,但如何获取本机所处的网络IP地址呢?本文将详细讲解获取本地内网(局域网)和外网(公网)IP地址的方法分析,并提供两条示例说明。

获取本地内网IP地址

获取本地内网(局域网)IP地址可以使用System.Net.NetworkInformation.NetworkInterface类,该类提供了获取网络接口的信息的方法,包括IP地址、MAC地址等信息。

using System.Net.NetworkInformation;
...
foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
    // 找到本机第一个非回环地址的IPv4地址
    if (ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet || ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211)
    {
        foreach (UnicastIPAddressInformation ip in ni.GetIPProperties().UnicastAddresses)
        {
            if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork && !IPAddress.IsLoopback(ip.Address))
            {
                Console.WriteLine($"本机内网IP地址:{ip.Address}");
                break;
            }
        }
    }
}

该代码使用了NetworkInterface.GetAllNetworkInterfaces()方法来获取所有网络接口信息,然后利用UnicastIPAddressInformation类中的Address属性获取IP地址。其中,NetworkInterfaceType用于指明网络接口类型,AddressFamily.InterNetwork表示IPv4地址,IPAddress.IsLoopback()方法用于判断是否为回环地址。

获取外网(公网)IP地址

获取外网(公网)IP地址需要借助网络请求。常用的网站为http://www.ip138.com/http://icanhazip.com/,通过访问该网站获取本机的公网IP地址。

using System.Net;
...
string content;
using (WebClient wc = new WebClient())
{
    content = wc.DownloadString("http://www.ip138.com/ip2city.asp");
}
Match match = Regex.Match(content, @"\[(.*)\]");
if (match.Success)
{
    Console.WriteLine($"本机公网IP地址:{match.Groups[1].Value}");
}

该代码使用了WebClient.DownloadString(string address)方法来获取网站的内容,然后借助正则表达式匹配IP地址。由于不同的网站可能返回的字符串格式不同,所以需要根据实际情况进行修改。

总结

本文介绍了获取本地内网(局域网)和外网(公网)IP地址的方法,分别使用了System.Net.NetworkInformation.NetworkInterfaceSystem.Net.WebClient类。实际开发中,应根据需要使用相应的方法进行IP地址获取。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • C#中Invoke的用法讲解

    下面我来详细讲解一下C#中Invoke的用法。 1. 概述 在C#中,Invoke是一种利用委托类型对控件进行操作的方法,一般用于在多线程情况下更新控件的界面。 2. 使用方法 Invoke方法是Control类的一个方法,用于对控件进行操作。Invoke方法有两种使用方式,分别是同步方式和异步方式: 2.1 同步方式 在同步方式中,Invoke方法会在当前…

    C# 2023年5月15日
    00
  • C#创建Web应用程序代码实例

    在C#中,创建Web应用程序是一种常见的开发任务,它可以帮助开发者构建基于Web的应用程序。在本攻略中,我们将详细介绍如何使用C#创建Web应用程序,并提供两个示例来说明其用法。 以下是两个示例,介绍如何使用C#创建Web应用程序: 示例一:使用ASP.NET Web Forms创建Web应用程序 首先,我们需要创建一个ASP.NET Web Forms项目…

    C# 2023年5月15日
    00
  • C# Websocket连接实现wss协议

    C# Websocket连接实现wss协议攻略 前言 WebSocket 协议是一种基于 TCP 传输的全双工通信协议。它的目标是在 Web 浏览器和服务器之间建立实时通讯。wss 协议是一种加密协议,可以保证通讯过程中的数据安全性。本文将分享如何使用 C# 实现 wss 协议的 Websocket 通讯。 准备工作 在开始前,我们需要准备以下内容: 最新版…

    C# 2023年6月6日
    00
  • c# 异步编程基础讲解

    下面我将详细讲解“c# 异步编程基础讲解”的完整攻略: 1. 简介 异步编程是一种让应用程序能够更加高效地使用系统资源的一种编程方式,它可以避免在执行长时间操作时阻塞主线程。在 C# 中,异步编程主要通过 async 和 await 关键字进行实现。 2. 异步方法的定义 异步方法的定义格式如下: public async Task<int> D…

    C# 2023年5月31日
    00
  • c# winform主题实现的方法

    下面就为您详细讲解“C# WinForm主题实现的方法”的完整攻略。 什么是C# WinForm主题? C# WinForm主题指的是WinForm应用程序在视觉上呈现不同于Windows默认主题的外观风格。通过添加或修改控件样式、颜色和字体大小等方面的属性,开发者可以为应用程序打造出独特的视觉效果。WinForm主题可用于增加应用的吸引力、优化用户体验等多…

    C# 2023年6月7日
    00
  • .NET core项目AsyncLocal在链路追踪中的应用

    .NET Core 项目 AsyncLocal 在链路追踪中的应用 在 .NET Core 项目中,AsyncLocal 是一个非常有用的工具,它可以帮助我们在异步调用链路中传递上下文信息。本攻略将详细介绍如何在 .NET Core 项目中使用 AsyncLocal 实现链路追踪。 AsyncLocal 的作用 在 .NET Core 项目中,AsyncLo…

    C# 2023年5月16日
    00
  • ASP.NET中为DataGrid添加合计字段

    ASP.NET中的DataGrid是一个非常常用的数据显示控件,它可以对数据进行分页、排序等操作,但有时候需要在DataGrid中添加一些合计字段,以便于数据的统计分析。下面就是为DataGrid添加合计字段的完整攻略。 第一步:在DataGrid的表头或脚部添加合计字段 DataGrid表头或脚部通常是显示一些汇总性信息的地方,我们可以在这里添加合计字段。…

    C# 2023年6月8日
    00
  • C# Path.Combine(params string[] paths):将多个路径组合成一个完整的路径

    C#的Path.Combine(params string[] paths)方法的作用是将多个字符串路径组合为一个路径,并返回组合后的路径字符串。 使用方法: 传递多个字符串路径作为参数,方法会将路径连接成一个路径,最终返回一个字符串路径。 string path1 = @"\usr\home"; string path2 = &quot…

    C# 2023年4月19日
    00
合作推广
合作推广
分享本页
返回顶部