C#如何获取当前主机的IP地址

news/2024/7/7 20:48:36

文章目录

  • 解决方案
    • 获取主机名
    • 获取IP地址
    • 过滤IPv4地址
  • 函数
  • 函数调用

解决方案

获取主机名

Dns 类提供了一组用于域名系统 (DNS) 操作的静态方法。

Dns.GetHostName();

我们可以使用Dns.GetHostName()方法来获取本地计算机的主机名, 这是一个静态方法。该方法调用操作系统的网络栈,以获取计算机的主机名。主机名是一个用来标识网络上的设备的名称。在网络中,每个设备都有一个唯一的主机名,通过主机名可以在网络中进行设备间的通信。

获取IP地址

Dns.GetHostAddresses(hostName);

获取到主机名后,我们使用Dns.GetHostAddresses(hostName)方法来获取IP列表,这也是一个静态方法,用于获取指定主机名(或 IP 地址字符串)对应的 IP 地址列表。它接受一个主机名或 IP 地址作为参数,并返回一个 IPAddress[] 数组,其中包含与该主机名或 IP 地址关联的所有 IP 地址。

该方法首先尝试解析参数中传入的主机名。如果传入的是一个有效的主机名,它将查询 DNS 服务器以查找与该主机名对应的 IP 地址。如果找到了相关的 IP 地址,将返回一个包含这些 IP 地址的数组。

另外,如果传入的参数是一个有效的 IP 地址字符串(例如:“192.168.0.1”),那么方法将直接将该字符串解析为一个 IPAddress 对象并放入数组中返回。

该方法在解析过程中,如果遇到了问题或访问权限的限制,会抛出异常,如 SocketException 或 SecurityException。

过滤IPv4地址

可以通过一个枚举值AddressFamily.InterNetwork来过滤IPv4地址。

AddressFamily 是一个枚举类型,定义了不同的网络地址类型。其中,InterNetwork 表示 IPv4 地址,InterNetworkV6 表示 IPv6 地址,Unix 表示 Unix 域套接字地址等。

函数

using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System;

public static List<string> GetIPv4Addresses()
{
    string hostName = Dns.GetHostName();
    IPAddress[] addresses = Dns.GetHostAddresses(hostName);

    List<string> ipv4Addresses = new List<string>();

    foreach (IPAddress address in addresses)
    {
        // 判断是否为IPv4地址
        if (address.AddressFamily == AddressFamily.InterNetwork)
        {
            ipv4Addresses.Add(address.ToString());
        }
    }

    return ipv4Addresses;
}

该函数将返回找到的所有IPv4地址,调用后会得到一个包含所有找到的IPv4地址的列表。如果没找到IPv4地址,则返回一个空列表。

函数调用

打印出找到的所有IPv4地址。
函数调用如下:

List<string> ipv4Addresses = GetIPv4Addresses();

foreach (string address in ipv4Addresses)
{
    Console.WriteLine(address);
}

http://lihuaxi.xjx100.cn/news/1453685.html

相关文章

08 - 网络通信优化之IO模型:如何解决高并发下IO瓶颈?

提到 Java I/O&#xff0c;相信你一定不陌生。你可能使用 I/O 操作读写文件&#xff0c;也可能使用它实现 Socket 的信息传输…这些都是我们在系统中最常遇到的和 I/O 有关的操作。 我们都知道&#xff0c;I/O 的速度要比内存速度慢&#xff0c;尤其是在现在这个大数据时代背景…

SIP网络音频模块SV-2401V网络对讲音频模块(支持POE)

功能和特点 音频工作方式&#xff1a; 音频解码&#xff1a;即音频播放。接收来自网络的音频流&#xff0c;经过模块解码后通过线路输出高质量音频信号。目前支持可以播放以下音频格式&#xff1a;MP3、WAV (PCM IMA ADPCM)、G.711、G.722等&#xff0c;可以播放最高48k采样率…

Mysql安装配置教程(超详细)(C盘、D盘均可安装)

Mysql安装配置教程&#xff08;超详细&#xff09;&#xff08;C盘、D盘均可安装&#xff09; mysql安装配置教程&#xff08;超详细&#xff09;&#xff08;C盘、D盘均可安装&#xff09;0x1 官网下载Mysql下载 0x2 选择安装模式0x3 Developer Default &#xff08;C盘安装&a…

[MySQL] — 数据类型和表的约束

目录 数据类型 数据类型分类 数值类型 tinyint类型 bit类型 小数类型 float decimal 字符串类型 char varchar char和varchar的区别 日期和时间类型 enum 和 set 表的约束 空属性 默认值 列描述 zeorfill 主键 创建表时在字段上指定主键 删除主键&#xff1a; 追…

100道python练习题(九)

请看以下第81到90题的代码示例&#xff1a; 编写一个程序&#xff0c;判断一个字符串是否是回文字符串。 def is_palindrome(string):string string.lower() # 忽略大小写clean_string .join(filter(str.isalnum, string)) # 去除非字母数字字符return clean_string cle…

Nginx 使用 HTTPS(准备证书和私钥)

文章目录 Nginx生成自签名证书和配置Nginx HTTPS&#xff08;准备证书和私钥&#xff09;准备证书和私钥 Nginx生成自签名证书和配置Nginx HTTPS&#xff08;准备证书和私钥&#xff09; 准备证书和私钥 生成私钥 openssl genrsa -des3 -out server.key 2048这会生成一个加密…

前端图片转base64,并使用canvas对图片进行压缩

目录 1.图片转base64的应用场景 2.图片转base64代码 3.对上传的图片进行压缩 1.图片转base64的应用场景 图片转base64通常用在用户上传图片的情况下使用&#xff0c;他的作用就是让用户看到预览的图片不受网络的影响。 这是传统的文件传输的流程&#xff1a;首先是用户选择…

Odoo|当我在Odoo用画布创建流程图

作者&#xff1a;沈童 | 前端开发工程师 快要七夕了&#xff0c;牛郎与织女的爱情故事&#xff0c;还在民间传播&#xff0c;口口相传&#xff0c;最近我遇到了一个需求&#xff0c;需要绘制一个特殊的步骤图&#xff0c;它采用上下两层分列式流转的形式。我在考虑使用哪种前端…