如何在python的BaseHTTPRequestHandler上绑定多个指定的ip地址

如何在python的BaseHTTPRequestHandler上绑定多个指定的ip地址,python,basehttprequesthandler,Python,Basehttprequesthandler,我的服务器有3个ip地址,127.0.0.1、192.168.0.100和一个internet ip地址。我将在这个服务器上运行一个由python编写的服务,但我不希望它在internet上公开。 我使用BaseHTTPRequestHandler类来实现这个服务,那么如何只绑定127.0.0.1和192.168.0.100,而不绑定另一个呢 通常,路由器有一个选项,您可以允许服务器可见或不可见。如果在路由器上您将服务器设置为不可见,那么您的服务器将无法通过internet访问。我认为您有两种选

我的服务器有3个ip地址,127.0.0.1、192.168.0.100和一个internet ip地址。我将在这个服务器上运行一个由python编写的服务,但我不希望它在internet上公开。
我使用BaseHTTPRequestHandler类来实现这个服务,那么如何只绑定127.0.0.1和192.168.0.100,而不绑定另一个呢

通常,路由器有一个选项,您可以允许服务器可见或不可见。如果在路由器上您将服务器设置为不可见,那么您的服务器将无法通过internet访问。

我认为您有两种选择

1) 侦听所有接口,但重写BaseHTTPRequestHandler。init以检查客户端地址,如果连接来自不需要的接口,则断开连接


2) 创建多个套接字,每个要侦听的地址一个。SocketServer.serve_forever()处于阻塞状态,因此您需要为每个地址使用一个线程,或者切换到更复杂的框架,如twisted。

谢谢,但这不是一个选项,因为此服务器上还有其他服务。谢谢,我更喜欢解决方案1,因为第二个解决方案将添加大量代码。难道我不可能只在绑定地址元组中指定2个IP吗?据我所知不是这样。低级套接字只能绑定到单个地址(但可能添加任何地址)。如果您直接使用套接字,那么一次侦听多个套接字是相当容易的,但这似乎并没有在非常简单的SocketServer类中实现。还有一件事:绑定到通配符地址允许您的服务器在接口出现故障并进行备份(例如由于拔下电缆)时保持运行。如果绑定到特定地址,则需要手动重新侦听。