首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在c# winforms中获取internet虚整数格式的网络ip地址

如何在c# winforms中获取internet虚整数格式的网络ip地址
EN

Stack Overflow用户
提问于 2013-06-29 12:49:06
回答 2查看 977关注 0票数 0

http://checkip.dyndns.org/返回时,我正在尝试获取网络IP地址。

但是我是从后续代码中得到这个结果的。

10 80::28d3:b8e8:caab:63b3%10

我想要ip地址为因特网点-整数格式的lilke 122.168.149.143

代码语言:javascript
运行
复制
foreach (IPAddress ipa in Dns.GetHostAddresses(Dns.GetHostName()))
{
    if (ipa.AddressFamily == AddressFamily.InterNetwork)
    {
        textBox2.Text = ipa.ToString();
        break;
    }
}
EN

回答 2

Stack Overflow用户

发布于 2013-06-29 12:56:58

当您打算按IPv6地址进行过滤时,您目前正在按IPv4地址进行过滤!这就是为什么IPAddress.ToString()以冒号-十六进制表示法返回IP的原因。

若要按IPv4地址进行筛选,则需要根据AddressFamily.InterNetwork进行筛选:

代码语言:javascript
运行
复制
if (ipa.AddressFamily == AddressFamily.InterNetwork)
{ }

据我所知,你希望获得你的公共演讲。您列出的代码将返回您的私人(本地)地址!

Windows操作系统并不关心您的公共IP。操作系统只是简单地路由到定义的网关,而不担心细节。解决公共IP问题的唯一方法是查询一些外部系统。你需要外部帮助.

获取公共地址最可靠的方法是连接到外部web服务器,该服务器可以解析并以纯文本输出您的公共地址。你的问题已经列出了一个合适的服务。。您甚至可以通过自己提供服务来承担服务的责任。实现此很简单的PHP代码。

如果您的路由器支持UPnP (或SNMP),您可以查询您的路由器,尽管这可能不起作用。这对您的计算机来说可能已经足够了,但是有些路由器不支持UPnP,而且出于安全意识的用户很可能由于安全漏洞而禁用了UPnP。对于托管UpNp库,请参见此问题。

我已经读到,你可以使用示踪剂建立一个网站(一个你知道将在线),第一个“跳”将是你的路线。我从来没试过这个。

票数 3
EN

Stack Overflow用户

发布于 2013-06-29 12:55:15

点整数格式只能用于IP ver.4个地址。

在代码示例中,您甚至显式地只选择了IP。6个地址。

使用AddressFamily.InterNetwork而不是AddressFamily.InterNetworkV6来选择IPv4地址,然后ToString将按您期望的方式对其进行格式化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17380360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档