我正在编写一个P2P应用程序,我想决定使用TCP还是QUIC向对等体发送消息,这是为了测试协议,也是为了让用户决定(我想要pefed的quic协议)。但是我很难做到这一点。目前我将远程主机地址分为quic和tcp地址,然后向每个地址发出连接,但是有时tcp地址连接到udp,反之亦然。我不知道这是否是最好的方法
我已经尝试了切分的地址,使用TCP连接,QUIC,也从分布式哈希表会合收到的地址。
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。对不起,我的英语。
1条答案
按热度按时间aij0ehis1#
我做了一个功能,以改变为QUIC或TCP我张贴它的情况下,任何人都有兴趣,在任何人有更好的选择请分享,谢谢!
func setTransport(ctx上下文.上下文,对等体ID对等体.ID,首选QUIC bool)bool {
}