成功完成不同内网的通讯

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

@@ -4,6 +4,7 @@ import (
"context"
"encoding/json"
"fmt"
"net"
"strings"
"time"
@@ -111,6 +112,22 @@ func (s *sP2P) handleRegister(conn *websocket.Conn, msg GatewayMessage) {
return
}
// 追加公网ip
publicIp, _, _ := net.SplitHostPort(conn.RemoteAddr().String())
ParseIP := net.ParseIP(publicIp)
var ipType string
if ParseIP.To4() != nil {
ipType = "ip4"
} else {
ipType = "ip6"
}
port2 := 53533
data.Addrs = append(data.Addrs, fmt.Sprintf("/%s/%s/tcp/%d", ipType, publicIp, port2))
data.Addrs = append(data.Addrs, fmt.Sprintf("/%s/%s/udp/%d/quic-v1", ipType, publicIp, port2))
// 过滤回环地址
data.Addrs = s.filterLoopbackAddrs(data.Addrs)
// 保存客户端信息
client := &ClientConn{
ID: msg.From,
@@ -253,7 +270,7 @@ func (s *sP2P) handleDiscover(conn *websocket.Conn, msg GatewayMessage) {
"from_id": msg.From,
"peer_id": fromClient.PeerID,
//"addrs": s.getAddrsJSON(fromClient.Addrs),
"addrs": targetClient.Addrs,
"addrs": fromClient.Addrs,
}),
})
}