Python 3.x Python 3:http.server支持ipv6吗?

Python 3.x Python 3:http.server支持ipv6吗?,python-3.x,webserver,ipv6,Python 3.x,Webserver,Ipv6,http.server(http作为Python 3.x模块)是否支持ipv6?例如,使用以下命令行代码(启动Web服务器): 是的。定义服务器时,按如下所示执行 然后像这样听: server = HTTPServerV6(('::', 8080), MyHandler) server.serve_forever() Python3中有一个补丁允许在http.server中绑定IPv6。我试过了,发现它可以在我的笔记本电脑上使用。 请访问了解更多信息。 或者只需执行以下操作: 将+后面的行添加

http.server
http
作为Python 3.x模块)是否支持ipv6?例如,使用以下命令行代码(启动Web服务器):


是的。定义服务器时,按如下所示执行

然后像这样听:

server = HTTPServerV6(('::', 8080), MyHandler)
server.serve_forever()

Python3中有一个补丁允许在
http.server
中绑定IPv6。我试过了,发现它可以在我的笔记本电脑上使用。 请访问了解更多信息。 或者只需执行以下操作:

+
后面的行添加到文件
/your/path/to/python/Lib/http/server.py
中。 请注意,没有
+
的行是
server.py
的原始代码

    server_address = (bind, port)

+   if ':' in bind:
+       ServerClass.address_family = socket.AF_INET6
+        
    HandlerClass.protocal_version = protocol    
    httpd = ServerClass(server_address, HandlerClass)
然后尝试:

python -m http.server -b *your-ipv6-addr* *your-port*

从Python3.8开始,
Python-mhttp.server
支持IPv6(请参阅和)

要侦听所有可用接口,请执行以下操作:

python -m http.server --bind ::
Python 3.8于发布。

的Python 3版本(直到3.8)的外观如下:

server = HTTPServerV6(('::', 8080), MyHandler)
server.serve_forever()
myserver.py:

从http.server导入HTTPServer
从http.server导入SimpleHTTPRequestHandler
导入套接字
类HTTPServerV6(HTTPServer):
地址\u系列=socket.AF\u INET6
server=HTTPServerV6((“:”,8080),SimpleHTTPRequestHandler)
服务器。永远为您服务()

像这样修改内部Python 3文件似乎有些极端。

使用
netstat-l
查看它是否绑定到IPv6地址上的端口。如果是的话,“是的,它被支持”。你如何解释结果?我甚至看不到这里列出的我连接的端口号(或任何提到的IPv6)。也使用
-n
选项,这会使输出更有用吗?IPv6地址可以通过看起来与IPv4地址不同来识别-如果服务器同时侦听IPv6和IPv4上的端口,将显示两个条目。IPv4的侦听所有IP值为0.0.0.0,IPv6的侦听所有IP值为::0。(如果在此之后未显示端口,则服务器当前根本没有运行/侦听。)但这不是答案:(它只是说它目前没有监听IPv6;并不是说它不能监听。可能有一个选项,等等,或者可能只是网络接口没有为IPv6设置。没有理由这不起作用。底层代码显然支持它。是时候提交功能请求了。遗憾的是,内置HTTP服务器似乎很难实现。)le IPv6和IPv4连接。只要被动套接字未绑定到特定的v6地址(!=in6addr\u any,空字符串“:”)或设置了“仅IPv6\u”选项,IPv6堆栈就可以处理IPv4连接。您可以扩展HttpServer,而不是黑掉Python安装。
python -m http.server --bind ::