Mac OS上的6000端口有什么特别之处?

Ula*_*men 6 macos flask web

启动你的Mac.从快速入门页面获取基础Flask应用程序,并将端口更改为6000,这将为您提供以下内容:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.debug = True
    app.run(port=6000)
Run Code Online (Sandbox Code Playgroud)

将其保存在名为eg的文件中test.py.然后创建一个virtualenv,运行pip install flask和调用test.py.以下是您将在终端上看到的内容:

 * Running on http://0.0.0.0:6000/ (Press CTRL+C to quit)
 * Restarting with stat
Run Code Online (Sandbox Code Playgroud)

所以Flask声称已经绑定到6000端口.现在启动浏览器并导航到localhost:6000.我期待看到愚蠢的消息Hello World,这是我省略port论据run并导航到的情况localhost:5000.但这是我所看到的:

在此输入图像描述

现在Ctrl-C在终端上做,并停止运行过程.将端口更改为6001,重新运行该命令.Hello World回来了!怎么会这样?没有其他进程连接到端口6000; lsof -i | grep 6000返回0结果,如果有任何进程,Flask将无法首先绑定到该端口.防火墙已关闭.

有任何想法吗?

Ula*_*men 7

好的,找到答案了。浏览器会屏蔽某些端口,虽然它们不在系统端口范围内,但其中一些在广泛用于本地 Web 开发的范围内。此答案中的链接指向浏览器供应商和详尽列表的基本原理。正如德国人所说,“Wieder 是gelernt”。

感谢@glyphobet 的评论,他给出了正确的答案。