为什么主机http服务器需要指定它托管的IP?

时间:2015-08-20 06:27:16

标签: python httpserver basehttpserver

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

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

为什么知道机器的IP可以连接到http服务器的人怎么样?

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

2 个答案:

答案 0 :(得分:2)

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

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

希望有特殊的地址:

  • localhost或127.0.0.1是环回地址,只能从本地计算机访问。它目前用于本地服务的测试
  • 0.0.0.0(any)是一个特殊地址,用于声明您要侦听所有本地接口。我认为这就是你想要的。

答案 1 :(得分:1)

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