Can't connect to Flask web service, connection refused
我试图在带有Flask的Raspberry Pi上运行一个简单的Web服务器。 当我运行Flask应用程序时,它说:
running on http://127.0.0.1:5000/
但是,当我在笔记本电脑的Chrome中输入此地址时,
ERR_CONNECTION_REFUSED
我可以在Raspberry Pi的浏览器上打开127.0.0.1:5000。 我需要怎么做才能从另一台计算机连接?
-
127.0.0.1是本地主机地址,只能从raspi访问。 为了从笔记本电脑获得访问权限,请打开raspi上的终端,然后尝试从ifconfig发送的IP地址看起来像192.168.0.XX:5000。 这假定它们都在同一本地网络上。
-
@jm_____ ifconfig返回192.168.1.103,我用:5000尝试过,但仍然无法连接。 是的,他们都在同一个网络上
像这样运行您的应用程序:
1 2
| if __name__ == '__main__':
app.run(host='0.0.0.0') |
它将使服务器在外部可见。如果计算机的IP地址是192.168.X.X,则可以从同一网络通过5000端口访问它。就像http://192.168.X.X:5000
-
如果要从同一台计算机访问该应用程序,则仍然使用http:127.0.0.1:5000
-
对于那些正在寻找如何使用socketio进行操作的人:socketio.run(app,host = 0.0.0.0)
-
我一直在找答案半天。终于,我找到了。非常感谢你。
-
由于某些原因,flask run --host=0.0.0.0可以工作,但是app.run(host=0.0.0.0,port=5000)和flask run在Windows上不起作用。
-
@Sankalp我为您的问题推断出的是,当您运行flask run时,__name__不是__main__。因此,服务器将启动,但不会按照您在app.run()中传递的参数启动。在flask run --host=0.0.0.0中时,显式指定了主机。
-
@Sankalp的另一种方法是运行python .py-这将使用您提供的参数运行服务器(为什么?仅仅是因为这次__name__是__main__)。
-
@paradoxlover:感谢您的建议。两种解决方案都对我有用(Flask应用程序在Windows 10主机上的VirtualBox Linux VM中运行。使用了桥接网络选项。)。我添加了详细信息,因为花了很长时间才发现此问题。也许这些评论会帮助其他人更快地达到此提示。 (当然,flask服务器仅用于对VM上的flask应用程序进行第一次检查...稍后需要使用诸如gunicorn之类的其他东西)
通过flask run运行服务器时,将其更改为flask run --host=0.0.0.0
要进行连接,请找到运行脚本的服务器的IPV4地址。在同一网络上,转到http://[IPV4 address]:5000
-
由于某些原因,flask run --host=0.0.0.0可以工作,但是app.run(host=0.0.0.0,port=5000)和flask run在Windows上不起作用。
原因可能还在于防火墙拒绝端口5000上的传入连接。请尝试:
如果app.run()内部有debug = True,则其他计算机也将看不见该内容。在app.run()中指定主机和端口,而不使用debug = True。
1
| app.run(host='0.0.0.0',port=5000) |
如果您以这种方式运行应用,则服务器将在外部可见。
Setp的步骤:
使用以下命令运行您的应用
app.run(主机='0.0.0.0',端口= 5000)
转到窗口cmd。键入ipconfig并获取IPV4地址,假设您的IPV4地址为192.168.X.X
转到移动浏览器并输入192.168.X.X:5000
-
为什么我必须使用IPv4地址而不使用本地主机地址?
-
@AlexF我不能辩解,因为我不是烧瓶开发人员。但是当我在项目上工作时,此配置对我有用。
您将必须运行开发服务器,以便它侦听所有接口上的请求,而不仅仅是本地接口
让Flask收听0.0.0.0:PORT_NUMBER
或您可以选择的任何其他端口
-
两个设备必须连接到同一网络。
-
使用app.run(host='0.0.0.0',port=5000)并运行自己的Ipv4
像他的http:// [您的Ipv4地址]一样的地址:5000
-
如果您将其与android应用程序连接,请不要忘记
将INTERNET权限放入清单文件中。