using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
namespace PrintBarCode.Helper
{
public class NetworkHelper
{
///
/// 获取本地计算机的所有 IPv4 地址。
///
/// IPv4 地址列表。如果没有找到,则返回一个空列表。
public static List GetLocalIPv4Addresses()
{
List ipAddresses = new List();
try
{
// 获取所有网络接口
var networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (var networkInterface in networkInterfaces)
{
// 检查网络接口是否处于正常状态且不是回环接口
if (networkInterface.OperationalStatus == OperationalStatus.Up &&
networkInterface.NetworkInterfaceType != NetworkInterfaceType.Loopback)
{
// 获取该接口的IP属性
var ipProperties = networkInterface.GetIPProperties();
// 获取单播地址集合
var unicastAddresses = ipProperties.UnicastAddresses;
foreach (var address in unicastAddresses)
{
// 检查是否是 IPv4 地址
if (address.Address.AddressFamily == AddressFamily.InterNetwork)
{
// 获取 IPv4 地址并添加到列表
var ipAddress = address.Address.ToString();
if (!string.IsNullOrEmpty(ipAddress) && !ipAddress.StartsWith("169.254")) // 排除自动私有地址
{
ipAddresses.Add(ipAddress);
}
}
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("获取IP地址时发生错误: " + ex.Message);
}
return ipAddresses;
}
///
/// 获取本地计算机的第一个有效的 IPv4 地址。
///
/// 第一个有效的 IPv4 地址,如果没有找到则返回 null。
public static string GetFirstLocalIPv4Address()
{
var ipAddresses = GetLocalIPv4Addresses();
return ipAddresses.Count > 0 ? ipAddresses[0] : null;
}
}
}