【问题标题】:Getting ip from specific URL从特定 URL 获取 ip
【发布时间】:2016-10-21 00:01:15
【问题描述】:

我正在尝试使用以下方法获取特定 url 的 IP 地址:

var ip = Dns.GetHostAddresses("http://oldschool.runescape.com/game?world=321")[0];

问题是这个函数似乎只适用于正常的主机地址(正如函数所说,例如:www.runescape.com),当使用这个特定的更深的 URL 时会产生异常。有什么函数可以获取更具体的URL的IP吗?

提前致谢。

【问题讨论】:

    标签: c# networking ip


    【解决方案1】:

    这样的完整网址将具有相同的主机名。获取主机名的简单方法是:

    var url = "http://oldschool.runescape.com/game?world=321";
    Uri myUri = new Uri(url);
    var ip = Dns.GetHostAddresses(myUri.Host)[0];
    

    只需从 url 中提取主机,这样可以防止您的错误为您提供正确的主机 IP 地址。

    【讨论】:

    • 这仅适用于只有一张以太网卡的情况。当您有多个以太网卡时,您必须检查 IP。环回地址 127.0.0.1 (localhost) 也存在问题。每台计算机都有一个主机文件,其中包含每个以太网卡和环回地址。一些计算机有本地主机,而另一些则没有。有些先有以太网卡,有些先有 localhost。 GetHostAddress 在主机文件(在 windows 文件夹中)中查找条目。所以索引可能不为零。
    【解决方案2】:

    我不是 DNS 专家,但是“更具体”的 URL 应该无关紧要,因为您只需要关心主机节点的 IP。其余的子域仍然驻留在同一个框中,并且应该具有相同的 IP 地址。如果出于某种原因,您要查找的是该域中的托管服务,那么它将具有完全不同的 URL。

    例如,一个 NSLOOKUP 只会返回根域;

    处理您的查询的 DNS 服务器:localhost DNS服务器地址:127.0.0.1#53

    非权威答案: oldschool.runescape.com 规范名称 = runescape.com。 名称:runescape.com 地址:91.235.140.130

    但是我确实看到您提供的 URL 确实重定向到其他地方:http://oldschool.runescape.com/slu

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-20
      • 2015-04-10
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多