我正在尝试在python中构建DNS服务器。它必须侦听两个端口(8007 - 客户端,8008 - 管理员)。客户端仅发送URL并接收相应的IP。管理员有权更改DNS表(添加,删除,...现在对此无关紧要。)
所以我的问题是:如何在两个端口上连续监听服务器以获取任何最终请求(我们可以同时拥有多个客户端,但在运营时只有一个管理员)
我的服务器有一个监听端口:
从SocketServer导入来自线程导入* 来自字符串导入* 导入套接字
class Server(ForkingMixIn, TCPServer): pass #fork for each client
class Handler(StreamRequestHandler):
def handle(self):
addr = self.request.getpeername()
print 'Got connection from', addr
data=(self.request.recv(1024)).strip()
if data not in dic: #dic -> dictionary with URL:IP
self.wfile.write('0.0.0.0')
else:
self.wfile.write(dic.get(data))
server = Server(('', 8007), Handler)
server.serve_forever()
答案 0 :(得分:5)
答案 1 :(得分:0)
您可以使用非阻塞套接字,并使用select调用从套接字读取。这篇Sockets Programming HOWTO for Python文章有non-blocking sockets in Python部分,可以提供帮助。
另见: