我无法从其他设备连接到Flask服务器(=不是从localhost)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我无法从其他设备连接到Flask服务器(=不是从localhost)相关的知识,希望对你有一定的参考价值。

我的目标是在python服务器和android(java)客户端之间构建RESTful API通信。

我想从一个客户端开始使用chrome中的URL,然后使用android-java客户端。

我有一个非常简单的Flask服务器:

from flask import Flask
app = Flask(__name__)

@app.route("/RESTfulExample/json/product/get")
def hello():
    return "Hello !!"

if __name__ == "__main__":
    app.run()

当这是localhost(ip = 127.0.0.1)时,服务器和客户端之间的通信运行良好。

问题是当我从另一台设备运行客户端时(我尝试使用手机和另一台计算机):

from flask import Flask
app = Flask(__name__)

@app.route("/RESTfulExample/json/product/get")
def hello():
    return "Hello !!"

if __name__ == "__main__":
    #app.run()
    app.run(host='10.0.0.54', threaded=True)

当我运行服务器并在chrome URL中输入此URL(http://10.0.0.54:5000//RESTfulExample/json/product/get)时,2-3分钟后它将返回ERR_CONNECTION_TIMED_OUT错误或ERR_ADDRESS_UNREACHABLE错误。

我对这个简单问题的解决方案一无所知。如果有人在这里帮助我,我将很高兴。

提前致谢 !!

答案

请将python脚本中的主机设置为

host='0.0.0.0'

有了它,服务器将侦听所有可用的网络接口。

您还必须分配您的端口(也在python中):

port=5000

请注意,防火墙不会阻止请求。要更改防火墙的行为,您可以使用(在Windows上)集成的防火墙工具。在那里,您还可以轻松地为本地网络中的端口5000启用TCP流量。

有时,您还必须在本地路由器中启用对等流量。

Ps:你的链接中也有两个斜杠

另一答案

从另一台计算机访问flask应用程序的一种方法是获取主机的IP并在另一台计算机上运行它。

在Windows中,转到cmd并键入ipconfig并查找您的计算机ipv4地址例如,192.168.0..在Linux中,使用ifconfig

然后,在另一台机器上,

http://<host_ipaddress>:<port>/<endpoint>

例如,http://10.0.0.4:5000/sample

以上是关于我无法从其他设备连接到Flask服务器(=不是从localhost)的主要内容,如果未能解决你的问题,请参考以下文章

如何从移动设备访问 Flask Web 服务器? [复制]

在 dockerized 环境中无法从 Flask 连接到 Kafka

带有mod_wsgi的flask-restless无法连接到MySQL服务器

无法从 android 设备连接到 xampp 服务器

无法从 iOS 设备连接到工作灯开发服务器(工作灯 6.2)

重新连接到我的 socket.io 服务器后,没有收到从我的 android 设备发送的事件