Python网络套接字IPv6不工作。

5

我正在尝试使用Python的socket将服务器连接到客户端,但是在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,则有时还需要提交专门的请求以启用IPv6。 - Pablo Henkowski
  1. 碰运气:尝试使用IPv4查看是否有效。至少这会给我们一个提示,告诉我们问题出在哪里。
  2. 这是一个网络问题,所以您必须向我们描述您的网络布局。顺带一提:您对路由有多少经验?
- Homer512
它可以在ipv4上运行,但ipv4仅限于本地网络。我希望它可以在不同的网络上运行。 - yoyopi768 yoyopi768
请分享您收到的完整错误信息。 - Ales Teska
@AlesTeska 没有错误信息,只是在等待连接,但无法工作。 - yoyopi768 yoyopi768
1个回答

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()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接