我正在编写一个服务器/客户端分布式工具。用户必须在某些时候输入网络地址。我想通过告诉我亲爱的用户来帮助他们确定当前的 IP 地址。
[更新]客户端和服务器在同一个网络中运行。(或者用户可以访问管理员)[/更新]
当我打电话时,Dns.GetHostAddresses(Dns.GetHostName())
我得到了一堆完全正确但没有真正帮助的条目。我可以通过哪种启发式方法选择最合适的条目来呈现给用户?
我正在编写一个服务器/客户端分布式工具。用户必须在某些时候输入网络地址。我想通过告诉我亲爱的用户来帮助他们确定当前的 IP 地址。
[更新]客户端和服务器在同一个网络中运行。(或者用户可以访问管理员)[/更新]
当我打电话时,Dns.GetHostAddresses(Dns.GetHostName())
我得到了一堆完全正确但没有真正帮助的条目。我可以通过哪种启发式方法选择最合适的条目来呈现给用户?
如果我理解你的问题是正确的,你可以比较IPAddress.AddressFamily
过滤AddressFamily.InterNetwork
下
if (ip.AddressFamily == AddressFamily.InterNetwork)
这是完整的代码
IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
// Local ip address
}
}
AddressFamily.InterNetwork
是针对 IPv4 地址的值。如果是 IPv6,您可以使用AddressFamily.InterNetworkV6
. 如需完整列表,请查看此链接。