using Microsoft.AspNetCore.Http; using System.Net.NetworkInformation; using System.Text.RegularExpressions; using Znyc.CloudCar.Utility.Extensions; namespace Znyc.CloudCar.Utility.Helper { public class IPHelper { /// /// 是否为ip /// /// /// public static bool IsIP(string ip) { return Regex.IsMatch(ip, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$"); } /// /// 获得IP地址 /// /// /// public static string GetIP(HttpRequest request) { if (request == null) { return ""; } string ip = request.Headers["X-Real-IP"].FirstOrDefault(); if (ip.IsNull()) { ip = request.Headers["X-Forwarded-For"].FirstOrDefault(); } if (ip.IsNull()) { ip = request.HttpContext?.Connection?.RemoteIpAddress?.ToString(); } if (ip.IsNull() || !IsIP(ip.Split(":")[0])) { ip = "127.0.0.1"; } return ip; } /// /// 获得MAC地址 /// /// public static string GetMACIp() { //本地计算机网络连接信息 //IPGlobalProperties computerProperties = IPGlobalProperties.GetIPGlobalProperties(); //获取本机电脑名 //var HostName = computerProperties.HostName; //获取域名 //var DomainName = computerProperties.DomainName; //获取本机所有网络连接 NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); if (nics == null || nics.Length < 1) { return ""; } string MACIp = ""; foreach (NetworkInterface adapter in nics) { string adapterName = adapter.Name; string adapterDescription = adapter.Description; NetworkInterfaceType NetworkInterfaceType = adapter.NetworkInterfaceType; if (adapterName == "本地连接" || adapterName == "WLAN") { PhysicalAddress address = adapter.GetPhysicalAddress(); byte[] bytes = address.GetAddressBytes(); for (int i = 0; i < bytes.Length; i++) { MACIp += bytes[i].ToString("X2"); if (i != bytes.Length - 1) { MACIp += "-"; } } } } return MACIp; } } }