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

时间:2018-03-12 17:00:59

标签: java android rest networking flask

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

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

提前致谢!!

3 个答案:

答案 0 :(得分:1)

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

host='0.0.0.0'

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

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

port=5000

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

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

Ps:链接中还有两个斜杠

答案 1 :(得分:0)

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

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

然后在另一台机器上

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

例如http://10.0.0.4:5000/sample

答案 2 :(得分:0)

尝试

  • app.run(host ='0.0.0.0',debug = True)
  • 允许端口5000上的TCP流量
  • 关闭防火墙