从同一网络上的其他设备连接到 Flask Server

Connect to Flask Server from other devices on same network

亲爱的 Whosebug 的聪明人,

我知道这个问题在这里被问了很多,但是 none 已发布的解决方案到目前为止对我有用。如有任何帮助,我们将不胜感激:

问题: 无法从同一网络上的其他设备(PC、手机)连接到 Flask 应用程序服务器。 (换句话说:本地主机工作正常,但我无法从外部设备连接)

我尝试过的:

1) 在 app.py 中设置 app.run(host='0.0.0.0', port=5000, debug=True, threaded=True) 以便服务器将侦听所有可用的网络接口。

2) 在 Windows Defender 防火墙中为本地网络的端口 5000 启用 TCP 流量(添加了入站和出站规则)

3) 在外部设备浏览器的 URL 栏中使用主机 PC 的 IPv4 地址,格式如下:http://<host_ipaddress>:<port>/

4) 在我的外部设备浏览器的 URL 栏中使用我主机的主机名,格式如下:http://<host_name>:<port>/

5) 运行 来自 Windows Powershell 和 Python (.py) 执行器的 app.py 文件

None 这些解决方案到目前为止都有效,即使在尝试从几个不同的外部设备进行连接之后也是如此。预先感谢您的帮助!

我对我的 django 项目进行了类似的设置。您的 PC 网络设置可能都很好,但您的路由器(至少对于 wlan)正在阻止流量。我通过篡改路由器管理器 api 中所需的设置解决了这个问题,路由器管理器可以从本地网络中的 192.168.1.1 找到。您可以检查您的设备 ip 地址等

很大程度上取决于您如何 运行安装您的应用程序。从你写的,我猜你有

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True, threaded=True)

如果这不起作用,您可以使用 flask run 来启动更改。这里的问题是 flask 将在您的应用程序的命名空间中查找 app 之前导入您的应用程序。问题是 __name__ 将反映基本文件的名称,而不是 __main__,因此 app.run() 永远不会得到 运行.

如果是这样,请尝试将 --host=0.0.0.0 作为参数传递。

我通过将我的家庭网络配置文件从 public 更改为私人网络配置文件解决了这个问题,这使得我的 PC 可以被发现。完全忽略了!

希望这对某人有所帮助!

这是对我有用的方法。

  1. 使用ifconfig命令查找系统的IP地址
  2. 将代码中的host ip换成你的ip

server.py:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def about():
    return 'It worked!'

if __name__ == '__main__':
    app.run(host='192.168.43.81', port=5000, debug=True, threaded=False)

到运行程序: python3 server.py

我知道晚了,但我相信它可以帮助别人。

如果您使用的是 windows,请转到您的互联网设置并将网络配置文件从 Public 更改为私有

转到您的 wifi 设置并将网络配置文件从 public 更改为私有。

如果它已经是私有的,请单击下面所示的配置防火墙和安全设置,这会打开 windows 安全性

针对私人连接禁用 Microsoft Defender 防火墙。

这对我有用