NetUtil.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. using Microsoft.AspNetCore.Http;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.Net.Http.Headers;
  4. using NPOI.HPSF;
  5. using NPOI.SS.Formula.Functions;
  6. using System.Net;
  7. using System.Net.NetworkInformation;
  8. using System.Net.Sockets;
  9. using System.Web;
  10. namespace WMS.Util
  11. {
  12. /// <summary>
  13. /// 描 述:网络操作
  14. /// </summary>
  15. public class NetUtil
  16. {
  17. #region Ip(获取Ip)
  18. /// <summary>
  19. /// 获取Ip
  20. /// </summary>
  21. public static string Ip
  22. {
  23. get
  24. {
  25. var result = string.Empty;
  26. if (WebUtil.HttpContext != null)
  27. result = GetWebClientIp();
  28. if (result.IsEmpty())
  29. result = GetLanIp();
  30. return result;
  31. }
  32. }
  33. /// <summary>
  34. /// 获取Web客户端的Ip
  35. /// </summary>
  36. /// <returns></returns>
  37. private static string GetWebClientIp()
  38. {
  39. var ip = GetWebRemoteIp();
  40. foreach (var hostAddress in Dns.GetHostAddresses(ip))
  41. {
  42. if (hostAddress.AddressFamily == AddressFamily.InterNetwork)
  43. return hostAddress.ToString();
  44. }
  45. return string.Empty;
  46. }
  47. public static string GetWebRemoteIp()
  48. {
  49. string remoteIp = null;
  50. // Get the IP address of the client making the request
  51. if (WebUtil.HttpContext.Request.Headers["X-Forwarded-For"] != "")
  52. {
  53. string[] forwardedFor = WebUtil.HttpContext.Request.Headers["X-Forwarded-For"].ToString().Split(',');
  54. if (forwardedFor.Length > 0)
  55. {
  56. remoteIp = forwardedFor[forwardedFor.Length - 1];
  57. }
  58. }
  59. else
  60. {
  61. //remoteIp = WebUtil.HttpContext.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
  62. // Use the HTTP_X_FORWARDED_FOR environment variable
  63. remoteIp = WebUtil.HttpContext.Request.Headers["HTTP_X_FORWARDED_FOR"];
  64. }
  65. return remoteIp;
  66. }
  67. /// <summary>
  68. /// 获取局域网IP
  69. /// </summary>
  70. /// <returns></returns>
  71. private static string GetLanIp()
  72. {
  73. foreach (var hostAddress in Dns.GetHostAddresses(Dns.GetHostName()))
  74. {
  75. if (hostAddress.AddressFamily == AddressFamily.InterNetwork)
  76. return hostAddress.ToString();
  77. }
  78. return string.Empty;
  79. }
  80. #endregion
  81. #region Host(获取主机名)
  82. /// <summary>
  83. /// 获取主机名
  84. /// </summary>
  85. public static string Host
  86. {
  87. get
  88. {
  89. return WebUtil.HttpContext == null ? Dns.GetHostName() : GetWebClientHostName();
  90. }
  91. }
  92. public string GetClientHostName()
  93. {
  94. string hostname = "";
  95. if (WebUtil.HttpContext.Request.Headers.ContainsKey("X-Forwarded-Host"))
  96. {
  97. hostname = WebUtil.HttpContext.Request.Headers["X-Forwarded-Host"];
  98. }
  99. else
  100. {
  101. hostname = WebUtil.HttpContext.Request.Host.Host;
  102. }
  103. return hostname;
  104. }
  105. /// <summary>
  106. /// 获取Web客户端主机名
  107. /// </summary>
  108. /// <returns></returns>
  109. private static string GetWebClientHostName()
  110. {
  111. var ip = GetWebRemoteIp();
  112. var result = Dns.GetHostEntry(IPAddress.Parse(ip)).HostName;
  113. if (result == "localhost.localdomain")
  114. result = Dns.GetHostName();
  115. return result;
  116. }
  117. #endregion
  118. #region Browser(获取浏览器信息)
  119. /// <summary>
  120. /// 获取浏览器信息
  121. /// </summary>
  122. //public static string Browser
  123. //{
  124. // get
  125. // {
  126. // if (WebUtil.HttpContext == null)
  127. // return string.Empty;
  128. // var browser = WebUtil.HttpContext.Request.Browser;
  129. // return string.Format("{0} {1}", browser.Browser, browser.Version);
  130. // }
  131. //}
  132. #endregion
  133. }
  134. }