4

我见过许多轻松检索机器或网站内部 IP 地址的方法。但是,我似乎找不到检索外部 IP 地址的好方法。

澄清一下,如果我提供像 bitbucket.org 这样的 URL,我想获取 bitbucket 的外部 IP 地址。有没有可以轻松做到这一点的网络服务?

编辑:假设,对于这种情况,我与 bitbucket.org 在同一个网络上。

我正在用我们公司管理的所有网站的信息填充一个数据库。我们希望使用特定数据跟踪信息并记录周期性变化。该程序将部署在与运行网站的服务器位于同一网络上的本地服务器之一上。我相信检索每个站点的外部 IP 地址的唯一好方法是使用外部 Web 服务。

4

5 回答 5

7

您可以使用System.Net.Dns.GetHostEntry()通过主机名获取 IP 地址。

于 2013-04-22T18:55:15.923 回答
3

您可以查询外部公共 DNS 服务器,例如 Google 位于 8.8.8.8 的服务器。从命令行

nslookup bitbucket.org 8.8.8.8

或在 Linux 中dig bitbucket.org @8.8.8.8。有一些 C# 库可以让您查询特定的 DNS 服务器,例如构建在此CodeProject 文章之上的DnsNet(找到搜索 - 我没有尝试过推荐它)。不过,这确实依赖于谷歌继续提供服务,但这似乎是安全的。

于 2013-04-22T22:51:52.520 回答
2

您可以使用 ping 实用程序。在 windows 中,通过按 windows 键 + r 打开命令窗口并键入

ping bitbucket.org
于 2013-04-22T18:56:23.783 回答
0

我认为您可以使用Dns.GetHostAddresses来获取 IP 地址。从 MSDN 文档:

GetHostAddresses 方法向 DNS 服务器查询与主机名关联的 IP 地址。

更新:

如果您正在寻找 Web 服务,请尝试查看whoisxmpapi.com。从这个示例中可以看出,它们确实在其 XML 输出中提供了名称服务器 IP 地址。然后,您可以使用类似方法直接从名称服务器获取 IP 地址!

于 2013-04-22T20:00:06.277 回答
-1

如果您想获取您的“wan”IP 而不是您的本地 IP,您可以尝试这样的事情。您还可以在 web 服务中添加这样的代码,并将其添加到 PC bitbucket 上(如果它真的在您的网络上并且您可以访问安装 web 服务)。

Public Shared ReadOnly Property IpAddress() As String
        Get
            If String.IsNullOrWhiteSpace(_ipAddress) Then
                Try
                    Dim webClient As New WebClient
                    Dim result As String = webClient.DownloadString("http://checkip.dyndns.org")

                    Dim fields = result.Split(" ")
                    _ipAddress = fields.Last
                    _ipAddress = _ipAddress.Replace("</body></html>", "")
                Catch ex As Exception
                    _ipAddress = "errorFindingIp"
                End Try
            End If
            Return _ipAddress
        End Get
    End Property
于 2013-04-22T20:09:44.420 回答