端口 6000 有什么特别之处?

What's special about port 6000?

开始你的 Mac。从 quickstart page 中获取基础 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)

将其保存在名为例如test.py。然后创建一个virtualenv,运行 pip install flask,并调用test.py。这是您将在终端上看到的内容:

 * Running on http://0.0.0.0:6000/ (Press CTRL+C to quit)
 * Restarting with stat

因此 Flask 声称已绑定到端口 6000。现在启动浏览器并导航至 localhost:6000。我原以为会看到愚蠢的消息 Hello World,当我省略 runport 参数并导航到 localhost:5000 时就是这种情况。但这是我看到的:

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

有什么想法吗?

好的,找到答案了。浏览器会屏蔽某些端口,尽管它们不在系统端口范围内,但其中一些端口在广泛用于本地 Web 开发的范围内。 The links in this answer 指出来自浏览器供应商的理由和详尽的列表。正如德国人所说,"Wieder was gelernt"。

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