簡體   English   中英

我無法從其他設備連接到 Flask 服務器(=不是來自本地主機)

[英]I can't connect to a Flask server from other devices(=not from 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 錯誤。

我對這個簡單問題的解決方案一無所知。 如果這里有人會幫助我,我會很高興。

提前致謝!!

試試這個

  • app.run(host='0.0.0.0', debug=True)
  • 允許端口 5000 上的 TCP 流量
  • 關閉防火牆

請將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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM