使用 libp2p 的程序使用 TCP、QUIC 或两者进行连接

问题描述 投票:0回答:0

我正在编写一个 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 建立一个连接。对不起我的英语。

go p2p ipfs libp2p go-libp2p
© www.soinside.com 2019 - 2024. All rights reserved.