提问人:com_Last 提问时间:7/10/2023 最后编辑:Klaus D.com_Last 更新时间:7/10/2023 访问量:94
如何使用 Python 3.10 编写 ipv6 服务器脚本
How to write an ipv6 server script using Python 3.10
问:
- 我的英语不是很好,所以我用了机器翻译。如果我冒犯了你,请原谅我*
我想使用 IPv4 使外部设备能够访问我的项目,但由于网关问题,我无法将端口映射到广域网。
所以我尝试使用ipv6,
根据在线消息来源,从 Python 版本 3.8 开始,您可以使用该命令将项目映射到 ipv6 地址python - m http. server -- bind::
但是它报告了一个错误,在尝试了很多方法之后,我仍然无法成功。如何实现对外部设备的访问?
OSError: \[Errno 98\] Address already in use
for res in \_socket.getaddrinfo(host, port, family, type, proto, flags): socket.gaierror: \[Errno -2\] Name or service not known
这是我的环境配置
- 蟒蛇3.10
- 蟒蛇3
答:
0赞
com_Last
7/10/2023
#1
我已经找到了解决问题的方法
第一种方法
创建新的 .py 文件
import http.server
import socket
class HTTPServerV6(http.server.HTTPServer):
address_family = socket.AF_INET6
Handler = http.server.SimpleHTTPRequestHandler
server = HTTPServerV6(('::', 8000), Handler)
server.serve_forever()
然后运行它
第二种方法
直接命令行执行
python -m http.server --bind :: 5050
我想这可能是因为 http.server 的 IPV6 模式没有默认端口号。如果直接运行它
python -m http.server --bind ::
错误报告如下
Traceback (most recent call last):
File "**/anaconda3/lib/python3.9/runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "**/anaconda3/lib/python3.9/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "**/anaconda3/lib/python3.9/http/server.py", line 1291, in <module>
test(
File "**/anaconda3/lib/python3.9/http/server.py", line 1240, in test
ServerClass.address_family, addr = _get_best_family(bind, port)
File "**/anaconda3/lib/python3.9/http/server.py", line 1223, in _get_best_family
infos = socket.getaddrinfo(
File "**/anaconda3/lib/python3.9/socket.py", line 954, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known
这次我用的是Python 3.9
无论如何,谢谢大家的帮助
这是我第一次使用 StackOverflow,我不是很熟练。I would would to say '蟹蟹各位了'
评论