网络(NET)帮助类
public class Net
{
/// <summary>
/// 获取Ip
/// </summary>
public static string Ip
{
get
{
string text = string.Empty;
bool flag = HttpContext.Current != null;
if (flag)
{
text = Net.GetWebClientIp();
}
bool flag2 = string.IsNullOrWhiteSpace(text);
if (flag2)
{
text = Net.GetLanIp();
}
return text;
}
}
/// <summary>
/// 获取主机名
/// </summary>
public static string Host
{
get
{
return (HttpContext.Current == null) ? Dns.GetHostName() : Net.GetWebClientHostName();
}
}
/// <summary>
/// 获取浏览器信息
/// </summary>
public static string Browser
{
get
{
bool flag = HttpContext.Current == null;
string result;
if (flag)
{
result = string.Empty;
}
else
{
HttpBrowserCapabilities browser = HttpContext.Current.Request.Browser;
result = string.Format("{0} {1}", browser.Browser, browser.Version);
}
return result;
}
}
/// <summary>
/// 获取Web客户端的Ip
/// </summary>
private static string GetWebClientIp()
{
string webRemoteIp = Net.GetWebRemoteIp();
IPAddress[] hostAddresses = Dns.GetHostAddresses(webRemoteIp);
string result;
for (int i = 0; i < hostAddresses.Length; i++)
{
IPAddress iPAddress = hostAddresses[i];
bool flag = iPAddress.AddressFamily == AddressFamily.InterNetwork;
if (flag)
{
result = iPAddress.ToString();
return result;
}
}
result = string.Empty;
return result;
}
/// <summary>
/// 获取Web远程Ip
/// </summary>
private static string GetWebRemoteIp()
{
return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
/// <summary>
/// 获取局域网IP
/// </summary>
private static string GetLanIp()
{
IPAddress[] hostAddresses = Dns.GetHostAddresses(Dns.GetHostName());
string result;
for (int i = 0; i < hostAddresses.Length; i++)
{
IPAddress iPAddress = hostAddresses[i];
bool flag = iPAddress.AddressFamily == AddressFamily.InterNetwork;
if (flag)
{
result = iPAddress.ToString();
return result;
}
}
result = string.Empty;
return result;
}
/// <summary>
/// 获取Web客户端主机名
/// </summary>
private static string GetWebClientHostName()
{
bool flag = !HttpContext.Current.Request.IsLocal;
string result;
if (flag)
{
result = string.Empty;
}
else
{
string webRemoteIp = Net.GetWebRemoteIp();
string hostName = Dns.GetHostEntry(IPAddress.Parse(webRemoteIp)).HostName;
bool flag2 = hostName == "localhost.localdomain";
if (flag2)
{
hostName = Dns.GetHostName();
}
result = hostName;
}
return result;
}
}
本文来自博客园,作者:码农阿亮,转载请注明原文链接:https://www.cnblogs.com/wml-it/p/16522516.html
技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
开源库地址,欢迎点亮:
GitHub:https://github.com/ITMingliang
Gitee: https://gitee.com/mingliang_it
GitLab: https://gitlab.com/ITMingliang
建群声明: 本着技术在于分享,方便大家交流学习的初心,特此建立【编程内功修炼交流群】,为大家答疑解惑。热烈欢迎各位爱交流学习的程序员进群,也希望进群的大佬能不吝分享自己遇到的技术问题和学习心得!进群方式:扫码关注公众号,后台回复【进群】。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)