Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么赢了';我的flask服务器不能绑定我的ip地址吗?_Python_Linux_Flask - Fatal编程技术网

Python 为什么赢了';我的flask服务器不能绑定我的ip地址吗?

Python 为什么赢了';我的flask服务器不能绑定我的ip地址吗?,python,linux,flask,Python,Linux,Flask,我已尝试从本地主机0.0.0.0和ipv4地址运行。 当我使用localhost时,我无法从另一台计算机访问我的服务器。 当我使用0.0.0.0时,我也遇到了同样的问题,当我使用我的公共ipv4地址时,它抛出了一个错误 我的代码: from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__":

我已尝试从本地主机0.0.0.0和ipv4地址运行。 当我使用localhost时,我无法从另一台计算机访问我的服务器。 当我使用0.0.0.0时,我也遇到了同样的问题,当我使用我的公共ipv4地址时,它抛出了一个错误

我的代码:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
        return "Hello World!"

if __name__ == "__main__":
    app.run(host="[my ip address]")
我的错误:

 * Serving Flask app "hello" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
Traceback (most recent call last):
  File "hello.py", line 14, in <module>
    app.run(host="[my ip address]")
  File "/home/boomerhackr/.local/lib/python3.6/site-packages/flask/app.py", line 990, in run
    run_simple(host, port, self, **options)
  File "/home/boomerhackr/.local/lib/python3.6/site-packages/werkzeug/serving.py", line 1052, in run_simple
    inner()
  File "/home/boomerhackr/.local/lib/python3.6/site-packages/werkzeug/serving.py", line 1005, in inner
    fd=fd,
  File "/home/boomerhackr/.local/lib/python3.6/site-packages/werkzeug/serving.py", line 848, in make_server
    host, port, app, request_handler, passthrough_errors, ssl_context, fd=fd
  File "/home/boomerhackr/.local/lib/python3.6/site-packages/werkzeug/serving.py", line 740, in __init__
    HTTPServer.__init__(self, server_address, handler)
  File "/usr/lib/python3.6/socketserver.py", line 456, in __init__
    self.server_bind()
  File "/usr/lib/python3.6/http/server.py", line 136, in server_bind
    socketserver.TCPServer.server_bind(self)
  File "/usr/lib/python3.6/socketserver.py", line 470, in server_bind
    self.socket.bind(self.server_address)
OSError: [Errno 99] Cannot assign requested address


这是Ubuntu的问题还是我的代码的问题?

“curl ifconfig.me”提供您的公共IP地址。有时它被分配给路由器,在某些情况下局域网使用NAT。这意味着您的计算机可以有一个专用IP地址。您是否使用ifconfig命令验证了在接口上分配的地址?

解决此问题的最佳方法是:

app.run(主机='0.0.0',端口='8000')
可根据需要更改端口

当您在不带任何参数的情况下使用
app.run
时,它将作为127.0.0.1主机绑定到您的本地系统。在此状态下,您的应用程序无法通过LAN或WAN(公共地址)通过任何其他系统连接

当您使用0.0.0.0运行它时,可以通过LAN和WAN访问它。要在Ubuntu中获取LAN地址,只需运行
hostname-I
,对于前面提到的WAN地址,可以使用
curl ifconfig.me
。因此,您可以使用
LAN\u IP:PORT

现在,大多数ISP不提供静态IP,您无法在internet上公开WAN IP。但是,当您在VPS上使用
0.0.0.0
运行应用程序时,您可以直接使用服务器的WAN IP并进行连接


可以找到
127.0.0.1
0.0.0.1
之间的差异,以供参考

是否也尝试设置端口?可能默认端口已在使用中。app.run(host=“[my ip address]”,port=5001)您应该只使用分配给网络接口或
0.0.0.0
(对于IPv4)或
(IPv6或双堆栈)的ip地址。如果您的系统防火墙允许这种连接,那么应该可以从同一局域网上的其他计算机访问它。我尝试将端口更改为5001,但不起作用。如果您尝试在端口80上提供服务,检查您是否以root用户身份运行-只允许root用户在较低的端口号上运行。非常感谢您,我使用了hostname-I,它终于起作用了!
NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"