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

问题描述 投票:1回答:2

我的目标是在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错误。

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

提前致谢 !!

java android rest networking flask
2个回答
1
投票

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

host='0.0.0.0'

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

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

port=5000

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

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

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


0
投票

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

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

然后,在另一台机器上,

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

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

© www.soinside.com 2019 - 2024. All rights reserved.