【问题标题】:Python socket ipv6 over network not working网络上的Python套接字ipv6不起作用
【发布时间】: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 没有错误信息,只等待连接,不工作。

标签: python sockets networking server connection


【解决方案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()

【讨论】:

    猜你喜欢
    • 2021-06-24
    • 1970-01-01
    • 2018-03-12
    • 2012-09-29
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    相关资源
    最近更新 更多