【问题标题】:Connection refused while querying a web server which runs on an ephemeral port查询在临时端口上运行的 Web 服务器时连接被拒绝
【发布时间】:2021-12-14 19:58:09
【问题描述】:

我想在一个临时端口上运行一个 Web 服务器,并以某种方式保存它的编号。我决定这样做:

from flask import Flask

import socket

app = Flask(__name__)

def find_free_port():
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind(("0.0.0.0", 0))
    port = sock.getsockname()[1]
    sock.close()
    return port

@app.route("/")
def home():
    return "Hello, World!"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=find_free_port())

在我的个人电脑上,我可以同时查询localhost0.0.0.0,但是有一台机器不工作,我收到了

curl: (7) Failed connect to localhost:<port_number>; Connection refused

可能是什么原因?当我使用localhost 作为接口而不是绑定到所有接口时,问题就消失了

【问题讨论】:

    标签: python sockets flask


    【解决方案1】:

    如果你尝试在另一台机器上使用真实的 IP 地址,比如192.168.1.104,它会起作用。

    这是因为当您在另一台机器上使用0.0.0.0 时,您将在同一台机器上请求但端口未打开。

    所以把请求改成http://ip_address:port_number

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-16
      • 2014-08-11
      • 2020-07-06
      • 2011-02-02
      • 2016-01-31
      • 2016-05-29
      • 2022-01-13
      • 1970-01-01
      相关资源
      最近更新 更多