【问题标题】:Get ip from udp url/address in tracker从跟踪器中的 udp url/地址获取 ip
【发布时间】:2017-11-12 12:10:37
【问题描述】:

在 Java 中,或更一般地说,如果我有一个跟踪器宣布 url,如:udp://tracker.coppersurfer.tk:6969,我如何获取 IP 地址以添加到需要 InetAddressDataGramPacket 的构造函数?

还是我遗漏了什么,而这些信息在 .torrent 文件中的其他地方可用?

在 BitTorrent 规范中,我只能找到使用 http 地址的方法,但我发现的所有种子都使用 udp 作为其跟踪器。

【问题讨论】:

    标签: java bittorrent


    【解决方案1】:

    如今运行流行的公共 http 跟踪器几乎是不可能的。因为他们需要太多的资源来运行。当跟踪器流行起来时,它只能使用 UDP

    BitTorrent UDP 跟踪器在BEP15 - UDP Tracker Protocol 中指定。

    要获取 URL 的 IP 地址,请使用 DNS。

    Get IP address with URL string? (Java)Victor Stafusa 的回答:

    试试这个:

    InetAddress address = InetAddress.getByName(new URL(urlString).getHost());

    获取原始 IP:

    String ip = address.getHostAddress();

    【讨论】:

    • 我理解它背后的原因,但我不知道将数据包发送到哪里。
    • 好吧,我以为 DNS 只用于 http。您是否知道任何用于此或其他资源检查的 Java 库?已经尝试了很多次谷歌搜索,但没有发现任何有用的信息。
    • 我想我误解了 DNS 的工作原理。认为它需要协议来查找,但它只使用域名。这很有意义。可以简单地对域名使用 getByName 方法。
    • 感谢您的回复!
    • 请注意,您应该改用getAllByName,因为跟踪器可能有 ipv4 和 ipv6 地址,您需要向每个地址族宣布一个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多