求助,公网ip,我没办法访问自己的dht系欸按

我弄了个公网ip,但是没办法访问自己的比特客户端的对外ip和监听的端口号,这两个是怎么回事?他俩的ip和端口号自动加入了dht网络了么?还有国内使用一些大型的dht网络的节点和端口号是不是访问不稳定,我访问经常超时,使用UDP协议访问的

没看明白,你是想用比特彗星做一个DHT超级服务器节点吗?

是的,大佬,就是我现在测试自己用,可以六个联系方式聊聊么

我有个作业是这样要求的,在服务器安装了比特彗星,然后进行种子资源分享,也有公网ip啥的,现在在本地java写的代码,然后想访问我这个自己的稳定的节点,但是链接都是超时,不知道为什么,比特彗星在运行期间会一直链接dht网吧,他的ip地址和端口号不是自动的回去dht网络节点注册成dht网络么,但是现在本地链接就是超时,用公网ip加端口号也不行,就很难受

比特彗星可以做成DHT超级节点服务器的,只要运行客户端起来处于托盘后台运行就行了,比特彗星DHT可以代替市面上的
router.bittorrent.comrouter.utorrent.comdht.transmissionbt.comrouter.silotis.usdht.libtorrent.org

你本地访问的话要用内网ip,用公网ip会因为连接握手ip和访问ip一致形成网络回环产生网络风暴,当然访问不到了
你可以用手机开热点,这样ip地址会变成其他的,就能成功访问了
也可以部署在vps远程服务器中,国内云记得安全组防火墙放通全部TCP/UDP端口,这样你本地电脑和服务器的ip地址就不一样了

我是直接部署私有云服务器上了,,然后打开软件在运行状态,我使用的是内网ip,因为是飞猫类的产品,ip地址会随时变动,单使用java发送udp请求就是超时,没有信息返回,,为什么一定要使用手机的wifi呢?这个和云服务器的ip地址不冲突吧

还有大佬,你发的几个站点我有了解到,但是有个问题哦,这些引导站点访问起来是不是斗不稳定,我访问起来有时候链接的上,有时候链接不上的

为了避免产生网络回环风暴,如果你使用vps服务器,则不需要担心这个问题

比特彗星可以彻底代替他们,成为一个DHT超级服务器

这种情况,就是你的代码有问题了,可以让ai帮你写一个代码,这是我刚让ai写的,你试一下能不能跑起来,ip地址改成你服务器的ip
如果您希望在Java中查询DHT网络,通过指定的服务器IP地址 192.168.1.2:22223,可以使用类似 JXTA 或其他支持DHT的库。以下是一个基本的示例,展示如何设置连接到指定的DHT服务器并执行查询。

请确保已将所需的库添加到您的项目中。以下是修改过的Java代码示例:

import net.jxta.peergroup.PeerGroup;
import net.jxta.endpoint.Message;
import net.jxta.endpoint.MessageElement;
import net.jxta.impl.endpoint.MessageElementImpl;

public class DHTQueryExample {

    public static void main(String[] args) {
        String hash = "93d30517d56c09542aee5595d6eacea607d01b83";
        String dhtServerAddress = "192.168.1.2:22223";
        queryDHT(hash, dhtServerAddress);
    }

    public static void queryDHT(String hash, String dhtServerAddress) {
        try {
            // 初始化JXTA网络
            PeerGroup netPeerGroup = PeerGroup.getPeerGroup();

            // 创建消息
            Message message = new Message();
            MessageElement element = new MessageElementImpl("hash", hash.getBytes());
            message.addMessageElement("query", element);

            // 连接到指定的DHT服务器
            // 这里应实现发送消息到DHT网络的逻辑
            // 实际的实现可能需要使用Socket连接到dhtServerAddress

            // 这里是一个伪代码示例,您需要替换成合适的实现
            // Socket socket = new Socket("192.168.1.2", 22223);
            // OutputStream out = socket.getOutputStream();
            // out.write(message.toByteArray());
            // out.flush();

            // 等待结果并处理(实现具体逻辑)
            System.out.println("查询中,请稍候...");
            // 处理返回结果的逻辑

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

注意事项:

  1. Socket 连接:您需要实现Socket连接的部分,以便与DHT服务器进行通信。
  2. 错误处理:在实际使用中,请添加适当的错误处理和连接管理。
  3. 库的使用:根据您所使用的DHT库的不同,具体的实现细节可能会有所不同。请根据文档进行调整。

有问题或需要进一步的帮助,请告诉我!

基本上大差不差,也是udp信息,就是一直链接超时,大佬有没有实际的测试的办法,或者测试链接点确实存在,然后我依照代码找问题

你可以把你的代码让ai找一下哪里有问题,一般来说是调用库,而不是自己去写代码实现,例如ai提到的JXTA库
这个网站可以测试udp是否能成功连接
https://check-host.net/check-udp?host=dht.transmissionbt.com%3A6881

例如测试

dht.transmissionbt.com:6881

返回结果Open or filtered代表服务器可连接

这个库也是很久了,,,,十几年前就有了,现在只能手写了


这是代表链接失败把

结果Open or filtered代表服务器可连接,是连接成功,接下来就是你的代码问题了


这代表也是连接?

connected是测试的tcp吧?是代表连接成功tcp,udp是Open or filtered

是的,是tcp,好的,这个代码哪里出问题了,是b编码错误?

能用库实现就别自己造轮子写代码,先把代码改成调用库去试一下,如果不行才考虑自己写
一般来说py的库比较全比较新,java确实用的人比较少

文档斗找不到,用不了

这些库都十几年前就有了