首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >只为http.server运行python IPv6

只为http.server运行python IPv6
EN

Stack Overflow用户
提问于 2022-10-27 22:12:45
回答 1查看 46关注 0票数 -1

python3 -m http.server --bind ::启动一个python服务器,如Python3: http.server支持ipv6吗?所示。但是,它也支持IPv4,因为我可以使用localhost:8000访问web服务器(编辑:甚至127.0.0.1:8000工作)。我不想这样。尽管我使用了http.server,但是python http.server是双堆栈的。

默认情况下,服务器将自身绑定到所有接口。选项b/- bind指定它应该绑定到的特定地址。文档

有禁用IPv4的方法吗?,我让它绑定到::

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-27 22:38:35

没有办法做到这一点,因为对IPv4的支持不是由Python提供的,而是由操作系统提供的。,我不是百分之百肯定。

更多细节

lsof -nP -i4TCP | grep LISTEN (打开IPv4上的网络文件/套接字)的输出包括(注意IPv6)

代码语言:javascript
运行
复制
Python    30838  ben    3u  IPv6 0xb364e79e7fc44213      0t0  TCP *:8000 (LISTEN)

它与IPv6网络文件lsof -nP -6 (警告:lsof -nP -i6TCP没有显示)一起使用:

代码语言:javascript
运行
复制
Python    30838  ben    3u  IPv6 0xb364e79e7fc44213      0t0  TCP *:8000 (LISTEN)

我认为操作系统为IPv4数据包创建了一个网络文件/套接字,尽管它并没有要求它(为了方便)。根据我对lsof和docs的理解:

当打开的IPv4网络文件的地址被映射到IPv6地址中时,打开的文件类型将是IPv6,而不是IPv4,其显示将由'6‘而不是'4’选择。

我刚刚意识到这是一个与我读昨天..。非常相似的“特性”

这意味着它不再是堆栈溢出的答案,而是Linux的答案:如何关闭服务器的双堆栈网络?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74228836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档