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

而且ai写的类已经变了很多次了

都十几年了,怎么可能十几年还没有文档完善,搜索引擎查一下很多的
JXTA 是一个开源的 P2P 协议框架,允许开发者构建分布式应用程序。以下是一些 JXTA 的文档和链接,供您参考:

  1. JXTA 官方网站

    • JXTA 项目主页
    • 这里可以找到 JXTA 的基本介绍、文档和下载链接。
  2. JXTA 文档

    • JXTA API 文档
    • 这部分提供了 JXTA 的 API 详细说明,包括如何使用 JXTA 构建 P2P 应用程序。
  3. JXTA 教程和示例

    • JXTA 示例代码
    • GitHub 上的 JXTA Java 实现,您可以找到示例代码,帮助您理解如何使用 JXTA。
  4. 社区和讨论

    • JXTA 论坛
    • 在这里,您可以与其他开发人员交流,获取支持和建议。

请访问这些链接以获取更多信息和资源。如果您有任何其他问题或需要具体的帮助,请随时告诉我!

比如这是问ai要的py代码,调用的库是libtorrent

要向自己的 DHT 服务器(192.168.1.2:22223)查询一个哈希(93d30517d56c09542aee5595d6eacea607d01b83),您可以使用以下步骤:

使用合适的工具或库:许多编程语言都有用于与 DHT 进行交互的库。例如,如果您使用的是 Python,您可以使用 libtorrent 等库。

构建查询请求:查询哈希通常需要构建一个特定格式的请求。以下是一个基本的 Python 示例,使用 libtorrent 查询 DHT:

import libtorrent as lt
import time

# 创建会话
ses = lt.session()
ses.listen_on(6881, 6891)

# 启用 DHT
ses.start_dht()

# 查询哈希
hash_str = '93d30517d56c09542aee5595d6eacea607d01b83'
info_hash = lt.sha1_hash(hash_str)
ses.add_torrent({'info_hash': info_hash})

# 等待结果
print("查询中...")
time.sleep(5)  # 等待一段时间以接收结果
ses.stop_dht()

处理结果:根据您使用的库的不同,您可能需要编写额外的逻辑来处理查询结果。

请根据您的环境和需求调整代码。如果您有特定的编程语言或库的偏好,请告诉我,我可以提供更详细的帮助。

是咱来用的搜索引擎不一样么。。。。。我醉了

看了下链接都404了,还是换py去写吧,py的库比较全

哭死,所以就很烦。。。。。。。。。。。。。。。。。。。

https://pypi.org/project/libtorrent/

没有库调用的话,那就只能自己去写代码实现了

这个也不行

这个例子看起来是直接用库做本地发起查询,没有调用服务器ip和端口,得改改

所以,头大,大佬。。。。。


让ai改了一下,代码里看起来有ip地址了,你再试试咯,不行就自己开发写代码了

要向您的 DHT 服务器查询特定哈希,您可以使用 Python 的 socket库进行 TCP 连接,或者使用库如 libtorrent,但这里为您提供一个简单的示例,使用 Python 的 socket 进行连接和查询。

以下是一个基本的示例代码,您需要根据您的 DHT 服务器的协议实现详细的查询逻辑:

import socket
import hashlib

def query_dht_server(ip, port, hash_value):
    # 创建套接字
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    try:
        # 连接到 DHT 服务器
        sock.connect((ip, port))
        
        # 构造查询请求
        # 这里需要根据您的 DHT 协议具体构造请求
        query = f"QUERY {hash_value}\n"  # 这只是一个示例格式
        
        # 发送请求
        sock.sendall(query.encode('utf-8'))
        
        # 接收响应
        response = sock.recv(4096)  # 接收最大4096字节, 根据需要调整
        
        print(f"响应: {response.decode('utf-8')}")
        
    except Exception as e:
        print(f"发生错误: {e}")
    finally:
        sock.close()

# 使用示例
dht_ip = '192.168.1.2'
dht_port = 22223
hash_to_query = '93d30517d56c09542aee5595d6eacea607d01b83'

query_dht_server(dht_ip, dht_port, hash_to_query)

请确保根据您 DHT 服务器的具体实现来修改请求的构造和解析响应。如果您有相关的协议文档,可以根据其要求构建查询和解析响应。

基本上也差不多,py使用socket,java使用datgramsocket

就是通过域名端口号连接不上,不知道为啥


返回数据一部分解码出来时乱码,醉了

如果是国内服务器 域名需要备案,否则会被云服务商拦截,直接用ip形式吧 获得数据后 解码的话用bencode解码

这玩意要涉及底层而数字转换呀,哎,真难

我直接用的服务器,没有用域名操作,解码已经解出来了

大佬,我有个问题呀,是不是有些资源时自己做的种子,我发现有些磁力链接下载不是一般的慢,是不是进入dht网络进行全网搜索的话,只能拿到正在下载这种种子的人呀。。。。

而且,有些有限制,我想自己做一个种子资源试试,但是不成功,服务器的比特慧云链接不上

你可以把你的代码开源出来帮助其他人了
你想的没错 这就是去中心化的dht 如果没有回应代表没有其他下载者和你在同一个种子上
如果你想拿其他种子的人 得用tracker服务器
但是你学校作业是dht,此时已经完成了毕业设计,就不需要进一步去研究了

tracker服务器 是干啥的,,是雷士比特彗星这种在服务器部署,然后把资源啦回来,然后相当于我们自己的节点,然后进行下载么,这样子理解没问题把,我现在一直都链接不上使用比特彗星拉回来的种子库