本地0.0.0.0服务无法访问

在本地启动服务时指定host为0.0.0.0,port指定为8881,然后通过0.0.0.0:8881访问不到,通过127.0.0.1:8881就能访问到,在不修改host及port的情况下,怎么才能直接访问到0.0.0.0:8881呢,求指点

阅读 13.8k
2 个回答

这个地址本身的含义只是代表本地所有可用ip而已。通常你应该用任意一个可以访问到本机的ip访问,比如127.0.0.1(本地环回地址), 192.168.1.x(局域网地址), x.x.x.x(外网ip映射)等等。

有趣的是对于0.0.0.0这个地址,实测在windows下会将这个地址作为访问的非法地址处理,但是在Linux下却是可以访问的,前提是你的程序必须监听的是0.0.0.0或者等效的ipv6地址[::]

测试用例,使用Python 3启动一个简易的http server:

python -m http.server
Serving HTTP on :: port 8000 (http://[::]:8000/) ...

Windows下访问会出错:

图片.png

但是Linux下没有任何问题:

图片.png

“通过 0.0.0.0:8881 访问不到”???

0.0.0.0 根本就不是一个有效的 IP 地址(它是 A 类地址下的一个保留地址),表示“本网络上的本主机”,只能用作源地址。你怎么能用它访问呢?

别人访问它当然要用它的某个网卡分配的 IP 了,无论是子网 IP 还是公网 IP 都可以,如果是本机也可以用回环地址 127.0.0.1。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题