123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- using Microsoft.AspNetCore.Http;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.Net.Http.Headers;
- using NPOI.HPSF;
- using NPOI.SS.Formula.Functions;
- using System.Net;
- using System.Net.NetworkInformation;
- using System.Net.Sockets;
- using System.Web;
-
- namespace WMS.Util
- {
- /// <summary>
- /// 描 述:网络操作
- /// </summary>
- public class NetUtil
- {
- #region Ip(获取Ip)
- /// <summary>
- /// 获取Ip
- /// </summary>
- public static string Ip
- {
- get
- {
- var result = string.Empty;
- if (WebUtil.HttpContext != null)
- result = GetWebClientIp();
- if (result.IsEmpty())
- result = GetLanIp();
- return result;
- }
- }
- /// <summary>
- /// 获取Web客户端的Ip
- /// </summary>
- /// <returns></returns>
- private static string GetWebClientIp()
- {
- var ip = GetWebRemoteIp();
- foreach (var hostAddress in Dns.GetHostAddresses(ip))
- {
- if (hostAddress.AddressFamily == AddressFamily.InterNetwork)
- return hostAddress.ToString();
- }
- return string.Empty;
- }
- public static string GetWebRemoteIp()
- {
- string remoteIp = null;
- // Get the IP address of the client making the request
- if (WebUtil.HttpContext.Request.Headers["X-Forwarded-For"] != "")
- {
- string[] forwardedFor = WebUtil.HttpContext.Request.Headers["X-Forwarded-For"].ToString().Split(',');
- if (forwardedFor.Length > 0)
- {
- remoteIp = forwardedFor[forwardedFor.Length - 1];
- }
- }
- else
- {
- //remoteIp = WebUtil.HttpContext.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
- // Use the HTTP_X_FORWARDED_FOR environment variable
- remoteIp = WebUtil.HttpContext.Request.Headers["HTTP_X_FORWARDED_FOR"];
- }
- return remoteIp;
- }
- /// <summary>
- /// 获取局域网IP
- /// </summary>
- /// <returns></returns>
- private static string GetLanIp()
- {
- foreach (var hostAddress in Dns.GetHostAddresses(Dns.GetHostName()))
- {
- if (hostAddress.AddressFamily == AddressFamily.InterNetwork)
- return hostAddress.ToString();
- }
- return string.Empty;
- }
- #endregion
- #region Host(获取主机名)
- /// <summary>
- /// 获取主机名
- /// </summary>
- public static string Host
- {
- get
- {
- return WebUtil.HttpContext == null ? Dns.GetHostName() : GetWebClientHostName();
- }
- }
- public string GetClientHostName()
- {
- string hostname = "";
- if (WebUtil.HttpContext.Request.Headers.ContainsKey("X-Forwarded-Host"))
- {
- hostname = WebUtil.HttpContext.Request.Headers["X-Forwarded-Host"];
- }
- else
- {
- hostname = WebUtil.HttpContext.Request.Host.Host;
- }
- return hostname;
- }
- /// <summary>
- /// 获取Web客户端主机名
- /// </summary>
- /// <returns></returns>
- private static string GetWebClientHostName()
- {
- var ip = GetWebRemoteIp();
- var result = Dns.GetHostEntry(IPAddress.Parse(ip)).HostName;
- if (result == "localhost.localdomain")
- result = Dns.GetHostName();
- return result;
- }
- #endregion
- #region Browser(获取浏览器信息)
- /// <summary>
- /// 获取浏览器信息
- /// </summary>
- //public static string Browser
- //{
- // get
- // {
- // if (WebUtil.HttpContext == null)
- // return string.Empty;
- // var browser = WebUtil.HttpContext.Request.Browser;
- // return string.Format("{0} {1}", browser.Browser, browser.Version);
- // }
- //}
- #endregion
- }
- }
|