网络上的Python套接字ipv6不起作用

Posted

技术标签:

【中文标题】网络上的Python套接字ipv6不起作用【英文标题】:Python socket ipv6 over network not working 【发布时间】:2021-12-19 09:54:15 【问题描述】:

我正在尝试使用套接字将服务器连接到 python 中的客户端。 问题是使用 ipv6 绑定,它可以在我的本地网络上运行。我想要的是将它连接到另一个网络。这些程序是用 Python 3 编写的

这里是server.py的代码:

import socket

HOST = someip
PORT = someport

server = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
server.bind((HOST, PORT))

server.listen()

client.py源码:

import socket
HOST = someip
PORT = someport

client = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
client.connect((HOST, PORT))

我认为这是一个端口转发问题。 我知道代码现在什么都不做,但我想先建立连接。

【问题讨论】:

检查您的客户端和服务器网络中的路由器设置。默认情况下,IPv6 路由通常被禁用。 ISP 有时还要求您提交专用请求以启用 IPv6(如果他们完全支持) 1.在黑暗中射击:尝试它是否适用于 IPv4。至少这会给我们一个提示,说明出了什么问题。 2. 这是一个网络问题,所以您必须向我们描述您的网络布局。在我们讨论的过程中:您对路由的总体经验如何? 它适用于 ipv4,但 ipv4 仅适用于本地网络。我希望它可以在不同的网络上工作 请分享您收到的错误信息;完整的。 @AlesTeska 没有错误信息,只等待连接,不工作。 【参考方案1】:

当服务器收到一个请求时,我们需要把它放在一个循环中接受它。 像这样

import socket

HOST = someip
PORT = someport

server = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
server.bind((HOST, PORT))
server.listen()
while True:
    try:
        conn, addr = server.accept()
        print(f"New request from addr")
    except KeyboardInterrupt:
        server.close()

【讨论】:

以上是关于网络上的Python套接字ipv6不起作用的主要内容,如果未能解决你的问题,请参考以下文章

STOMP 网络套接字回调不起作用

Python异步套接字recv不起作用

Linux 上的经典 BPF:过滤器不起作用

将密码与套接字 java 一起使用,不起作用

Python QtNetwork.QTcpSocket.readAll() 和 QtNetwork.QTcpSocket.write() 不起作用

如果拆分列表上的语句不起作用python3