gpt4 book ai didi

sockets - 如何调试以下 Go 代码,它试图与 IP 地址和端口建立 TCP 连接?

转载 作者:数据小太阳 更新时间:2023-10-29 03:13:58 25 4
gpt4 key购买 nike

我从 Bittorrent 跟踪器获取特定 torrent 文件的 IP 地址和端口号。它代表 bittorrent 网络上的对等点。我正在尝试使用此代码连接到对等方。连接总是超时(getsockopt:操作超时)。我想我在这里遗漏了一些非常基本的东西,因为我在 python 中尝试了相同的代码,结果完全相同,操作超时。它发生在每个对等 IP 地址上。

我下载了这个 BT 客户端 - https://github.com/jtakkala/tulva它能够使用这种类型的代码(第 245 行,peer.go)从我的系统连接到对等点。我还能够使用类似的代码连接到在本地主机上运行的 tcp 服务器。

在 JimB 的评论和 Kenny Grant 的回答之后编辑了细节

package main

import (
"fmt"
"net"
)

func main() {
raddr := net.TCPAddr{IP: []byte{}/*This byte slice contains the IP*/, Port: int(/*Port number here*/)}
conn, err := net.DialTCP("tcp4", nil, &raddr)
if err != nil {
fmt.Println("Error while connecting", err)
return
}
fmt.Println("Connected to ", raddr, conn)
}

最佳答案

尝试使用已知的好地址,您会发现您的代码工作正常(例如使用 4 字节 IPv4 地址)。 Bittorrent peer 是短暂的,所以它可能只是消失了,如果测试你应该使用你自己的 IP,你知道它是稳定的。

raddr := net.TCPAddr{IP: net.IPv4(151, 101, 1, 69), Port: int(80)}
...
-> Connected to {151.101.1.69 80 }

如果您尝试连接到 187.41.59.238:10442,正如 jimb 所说,它不可用。对于 IP,请参阅文档:

https://sourcegraph.com/github.com/golang/go@9fd359a29a8cc55ed665542d2a3fe9fef8baaa7d/-/blob/src/net/ip.go#L32:6-32:8

关于sockets - 如何调试以下 Go 代码,它试图与 IP 地址和端口建立 TCP 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42588102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com