【问题标题】:How to use python3 to connect to a ipv6 host using socket library如何使用 python3 使用套接字库连接到 ipv6 主机
【发布时间】:2020-02-04 10:01:06
【问题描述】:

以下是我尝试使用 python 中的套接字连接到 IPv6 地址主机的代码。但是,我所有的尝试都导致输出“网络无法访问”。您能否指出我做错了什么以及如何纠正?

import socket
sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
sock.connect(('2001:240:2408:8897:b4ac:9e51:ecc9:a388',8333,0,0))

OSError: [WinError 10051] 尝试对无法访问的网络进行套接字操作 工作

【问题讨论】:

    标签: python-3.x sockets ipv6


    【解决方案1】:

    您唯一做错的事情是提供了一个无法访问的 IP 地址和端口。其他工具(如 telnet 或 netcat)也无法访问它。语法本身是连接到 IPv6 服务器的正确语法。例如,如果您将 google.com 的 IP 地址替换为 1 并将端口替换为 80 (http),它将成功连接:

    sock.connect(('2a00:1450:4001:81c::200e',80,0,0))
    

    【讨论】:

    • 我尝试使用您在上面键入的代码连接到谷歌的 IPv6 地址。但是,我仍然遇到超时错误,说无法建立连接imgur.com/EtoezT6
    • @SajanMaharjan:我怀疑这是 Python 的问题。更有可能来自您系统的 IPv6 连接通常受到限制。您是否尝试过 Python 之外的其他方法来确保 IPv6 能够正常工作?
    • 如何确保检查 IPv6 是否正常工作?我尝试使用test-ipv6,结果显示 IPv6 连接不起作用?如何启用 IPv6?我尝试使用 netsh 命令行添加手动 IPv6 地址,但仍然找不到解决此问题的方法。在这里的任何帮助将不胜感激
    • @SajanMaharjan:“如何启用 IPv6?” - 这是一个不同的问题,不应在评论中提出。而且它不会成为 stackoverflow.com 的主题,因为它与编程无关 - superuser.com 会更合适。这也不是一个小问题。将 IPv6 添加到本地系统是不够的。如果您想通过 IPv6 访问外部系统,您的 ISP 需要首先为您提供适当的 IPv6 连接,但许多仍然没有。
    猜你喜欢
    • 2012-10-24
    • 1970-01-01
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 2018-03-12
    • 2021-12-01
    相关资源
    最近更新 更多