【问题标题】:UDP Socket using IPV6使用 IPV6 的 UDP 套接字
【发布时间】:2021-12-01 21:19:11
【问题描述】:

大家好,我正在实施一个 bittorrent 客户端,但遇到了障碍。 这是我从仅处理 ipv6 的特定跟踪器获取对等列表的代码。

tracker = "udp://tracker.birkenwald.de:6969/announce"
parse = urlparse(tracker)
ip, port = (socket.getaddrinfo(parse.hostname, parse.port, 0, 0, socket.SOL_TCP))[0][4][0], parse.port
#ip, port = 2001:1b10:1000:8101:0:242:ac11:2,6969
sock = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM) 
sock.sendto(tracker_connection.bytestringForConnecting(), (ip, port))

#bytestringForConnecting() is a function for getting the byte version as written in the protocol.

收到以下错误

Traceback (most recent call last):
  File "main.py", line 17, in <module>
    t.get_peer_list()
  File "/home/aditya/Desktop/CN/CN PROJECT/tracker.py", line 21, in get_peer_list
    self.udp_request(url)
  File "/home/aditya/Desktop/CN/CN PROJECT/tracker.py", line 64, in udp_request
    sock.sendto(tracker_connection.bytestringForConnecting(), (ip, port))
socket.gaierror: [Errno -9] Address family for hostname not supported

【问题讨论】:

    标签: python python-3.x sockets ipv6 bittorrent


    【解决方案1】:

    python socket documentation 表示 AF_INET6 地址必须作为 4 个值的元组传递。如果您传递一个 2 元组,它将被解释为 AF_INET (IPv4) 地址。

    【讨论】:

      猜你喜欢
      • 2017-03-20
      • 1970-01-01
      • 2021-04-16
      • 2020-12-26
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      • 2020-02-21
      • 2014-01-04
      相关资源
      最近更新 更多