成功完成不同内网的通讯

This commit is contained in:
2025-10-15 14:13:50 +08:00
parent e5e8c1c19f
commit c52d5359e9
7 changed files with 338 additions and 35 deletions

View File

@@ -1 +1,26 @@
package p2p
import (
"context"
"fmt"
dht "github.com/libp2p/go-libp2p-kad-dht"
"github.com/libp2p/go-libp2p/core/host"
)
// 初始化无服务器DHT作为节点加入DHT网络
func (s *sP2P) InitDHT(ctx context.Context, h host.Host) (*dht.IpfsDHT, error) {
// 创建DHT实例设置为“客户端+服务端模式”(既可以查找数据,也可以存储数据)
kdht, err := dht.New(ctx, h, dht.Mode(dht.ModeServer))
if err != nil {
return nil, fmt.Errorf("初始化DHT失败: %v", err)
}
// 启动DHT并加入网络会自动发现网络中的其他DHT节点
if err := kdht.Bootstrap(ctx); err != nil {
return nil, fmt.Errorf("DHT加入网络失败: %v", err)
}
fmt.Println("DHT初始化成功节点ID:", h.ID().ShortString())
return kdht, nil
}