C#获取内网与外网IP地址代码实现详解

8 下载量 182 浏览量 更新于2023-05-04 收藏 138KB PDF 举报
本文主要介绍了如何使用C#编程语言来获取本地计算机的内网(局域网)和外网(公网)IP地址。通过提供的代码示例,开发者可以获取到本机的所有IP地址,包括IPv4和IPv6两种类型。 在C#中,获取本地IP地址通常涉及到对DNS(Domain Name System)的使用。以下是一些关键知识点: 1. 获取主机名称: - `Dns.GetHostName()` 方法用于获取本地主机的名称,这是获取IP地址的第一步。 2. 解析主机IP地址: - `Dns.GetHostAddresses(hostName)` 方法用于根据主机名获取对应的IP地址数组。这个方法会返回一个包含所有与主机名关联的IP地址的数组,包括IPv4和IPv6。 3. 筛选IP地址: - `AddressFamily` 枚举用于标识IP地址的类型。`InterNetwork` 表示IPv4,`InterNetworkV6` 表示IPv6。 - 通过遍历`Dns.GetHostAddresses()` 返回的数组,可以筛选出指定类型的IP地址。 4. 获取本地所有IP地址: - `GetLocalIpAddress(string netType)` 是一个自定义方法,根据传入的参数`netType`来决定返回IPv4还是IPv6的地址。如果参数为空,它将返回所有类型的IP地址。 5. 局域网IP地址: - 在实际应用中,获取局域网IP地址可能需要额外的处理,因为`Dns.GetHostAddresses()` 返回的IP地址数组中,可能包含外网IP。通常,局域网IP是私有IP地址,如192.168.x.x或10.x.x.x等。如果要过滤出这些地址,可能需要检查IP是否属于私有IP范围。 6. 公网IP地址: - 获取公网IP地址通常需要从外部服务查询,因为本地的`Dns.GetHostAddresses()` 只能提供局域网内的IP地址。可以使用第三方API(如`http://checkip.dyndns.org`)来获取互联网上的公共IP。 示例代码中的`GetLocalIpAddress` 方法实现了基本的IP地址筛选功能,但获取公网IP并未涵盖。要获取公网IP,可以创建一个异步方法,向公网IP查询服务发送HTTP请求并解析响应来得到公网IP地址。 通过理解以上知识点,开发者可以构建出完整的获取本地内外网IP地址的功能,同时也能对网络编程有更深入的理解。