以獲取客戶端請求的ipv4爲例
一. 使用Request.HttpContext方式獲取:
/// <summary>
/// 獲取本地ipv4
/// </summary>
/// <returns></returns>
[HttpGet, Route("getlocalIp")]
public IActionResult GetlocalIp()
{
var result = new ResultInfo<string>();
//獲取客戶端請求的ipv4
var ip = Request.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();
result.Data = ip;
return Ok(result);
}
注意:此種方式當本地網絡路由器做了限制,或者使用了VPN等此種方式獲取ip將不適用,獲取所有網絡適配器名稱可採取第二種方式
二. 根據網絡適配器獲取ip:
private IList<string> GetHostIpForFas()
{
try
{
IList<string> strIp = new List<string>();
//NetworkInterface:提供網絡接口的配置和統計信息。
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in adapters)
{
IPInterfaceProperties adapterProperties = adapter.GetIPProperties();
UnicastIPAddressInformationCollection allAddress = adapterProperties.UnicastAddresses;
//這裏是根據網絡適配器名稱找到對應的網絡,adapter.Name即網絡適配器的名稱
if (allAddress.Count > 0 && adapter.Name == "WLAN 2")
{
foreach (UnicastIPAddressInformation addr in allAddress)
{
if (addr.Address.AddressFamily == AddressFamily.InterNetwork)
{
strIp.Add(addr.Address.ToString());
}
}
}
}
return strIp;
}
catch (Exception ex)
{
return null;
}
}
可對應電腦上的網絡屬性信息,見下圖:
注意:此種方式需提前知道網絡適配器的名稱,並保證網絡適配器名稱不變。
ps:如有不足或還有其他方式能獲取ip,歡迎大家評論指出。