我正在编写一个 P2P 应用程序,我想决定使用 TCP 或 QUIC 向对等方发送消息,以作为协议的基准并让用户决定(我希望 quic 协议成为首选协议) .但我很难这样做。目前,我将远程主机地址分为 quic 和 tcp 地址,然后分别发出一个连接,但有时 tcp 地址连接到 udp,反之亦然。我不知道这是不是最好的方法
我试图分割地址,使用 TCP、QUIC 以及从 DHT 会合点接收到的地址进行连接。
quicaddr := selectAddrs(peeraddr.Addrs, "quic")
tcpaddr := selectAddrs(peeraddr.Addrs, "tcp")
fmt.Println("[*] Using TCP protocol")
var peeraddrTCP peer.AddrInfo
peeraddrTCP.ID = peeraddr.ID
peeraddrTCP.Addrs = tcpaddr
fmt.Println(peeraddrTCP.Addrs)
err = Host.Connect(ctx, peeraddrTCP)
conn2 := Host.Network().ConnsToPeer(peeraddr.ID)
for _, c := range conn2 {
fmt.Println("Using: ", c.ConnState().Transport)
fmt.Println(c.RemoteMultiaddr())
available_add = append(available_add, c.RemoteMultiaddr())
c.Close()
}
fmt.Println("[*] Using QUIC protocol")
var peeraddrQUIC peer.AddrInfo
peeraddrQUIC.ID = peeraddr.ID
peeraddrQUIC.Addrs = quicaddr
fmt.Println(peeraddrQUIC.Addrs)
err = Host.Connect(ctx, peeraddrQUIC)
conn1 := Host.Network().ConnsToPeer(peeraddrQUIC.ID)
for _, c := range conn1 {
fmt.Println("Using: ", c.ConnState().Transport)
fmt.Println(c.RemoteMultiaddr())
available_add = append(available_add, c.RemoteMultiaddr())
c.Close()
}
基本上我想知道是否有可能与 tcp 和 quic 建立一个连接。对不起我的英语。