当http://checkip.dyndns.org/返回时,我正在尝试获取网络IP地址。
但是我是从后续代码中得到这个结果的。
10 80::28d3:b8e8:caab:63b3%10
我想要ip地址为因特网点-整数格式的lilke 122.168.149.143
foreach (IPAddress ipa in Dns.GetHostAddresses(Dns.GetHostName()))
{
if (ipa.AddressFamily == AddressFamily.InterNetwork)
{
textBox2.Text = ipa.ToString();
break;
}
}
发布于 2013-06-29 12:56:58
当您打算按IPv6地址进行过滤时,您目前正在按IPv4地址进行过滤!这就是为什么IPAddress.ToString()以冒号-十六进制表示法返回IP的原因。
若要按IPv4地址进行筛选,则需要根据AddressFamily.InterNetwork进行筛选:
if (ipa.AddressFamily == AddressFamily.InterNetwork)
{ }
据我所知,你希望获得你的公共演讲。您列出的代码将返回您的私人(本地)地址!
Windows操作系统并不关心您的公共IP。操作系统只是简单地路由到定义的网关,而不担心细节。解决公共IP问题的唯一方法是查询一些外部系统。你需要外部帮助.
获取公共地址最可靠的方法是连接到外部web服务器,该服务器可以解析并以纯文本输出您的公共地址。你的问题已经列出了一个合适的服务。。您甚至可以通过自己提供服务来承担服务的责任。实现此很简单的PHP代码。
如果您的路由器支持UPnP (或SNMP),您可以查询您的路由器,尽管这可能不起作用。这对您的计算机来说可能已经足够了,但是有些路由器不支持UPnP,而且出于安全意识的用户很可能由于安全漏洞而禁用了UPnP。对于托管UpNp库,请参见此问题。
我已经读到,你可以使用示踪剂建立一个网站(一个你知道将在线),第一个“跳”将是你的路线。我从来没试过这个。
发布于 2013-06-29 12:55:15
点整数格式只能用于IP ver.4个地址。
在代码示例中,您甚至显式地只选择了IP。6个地址。
使用AddressFamily.InterNetwork
而不是AddressFamily.InterNetworkV6
来选择IPv4地址,然后ToString
将按您期望的方式对其进行格式化。
https://stackoverflow.com/questions/17380360
复制相似问题