1

我使用 BaseHTTPServer 模块在 Python 上托管一个 http 服务器。

我想了解为什么需要指定托管 http 服务器的 IP,例如 127.0.0.1/192.168.0.1 或其他。[可能是一个通用的 http 服务器概念,而不是特定于 Python]

为什么不能像知道机器IP的任何人都可以连接到http服务器?

如果我的 http 服务器同时连接到两个网络,并且我想在两个网络上都为 http 服务器提供服务,我会遇到问题。当我从 http 服务器机器上的热点模式切换到连接到另一个 wifi 路由器时,我的 IP 通常会即时更改。

4

2 回答 2

2

尝试在 0.0.0.0 上运行它,它接受来自所有接口的连接。明确指定 IP 通常是一种很好的做法(负载平衡、缓存服务器、安全性、内部网络专用微服务等),但根据您的故事判断,这不是生产服务器,而是一些内部 LAN 应用程序。

于 2015-08-20T07:18:34.260 回答
2

您必须指定服务器的 IP 地址,主要是因为用于侦听套接字的底层系统调用需要它。在较低级别,您声明要使用的对(IP 地址,端口),监听它并接受传入的连接。

另一个原因是专业级服务器往往有多个网络接口和多个IP地址,而有些服务只需要监听一些接口地址。

希望有特殊的地址:

  • localhost 或 127.0.0.1 是环回地址,只能从本地机器访问。目前用于本地服务的测试
  • 0.0.0.0 (any) 是一个特殊的地址,用来声明你要监听所有的本地接口。我认为这就是你想要的。
于 2015-08-20T07:32:01.110 回答