从特定的URL获取IP

8

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

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

问题是该函数似乎仅适用于常规主机地址(如函数所述,例如:www.runescape.com),这会在使用此特定更深层次的URL时创建异常。是否有任何功能可以获取更具体URL的IP地址?

提前感谢。

2个回答

19

完整的URL将具有相同的主机名。获取主机名的简单方法如下:

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

只需从url中提取主机即可防止出错,并为您提供主机的正确IP地址。


1
只有一个以太网卡时才有效。当您有多个以太网卡时,必须检查IP。回环地址127.0.0.1(本地主机)也存在问题。每台计算机都有一个包含每个以太网卡和回环地址的主机文件。一些计算机具有本地主机,而其他计算机则没有。有些计算机首先具有以太网卡,而其他计算机则首先具有本地主机。GetHostAddress在主机文件中查找条目(在Windows文件夹中)。因此索引可能不为零。 - jdweng

0

我对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

希望这能帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接