如何让一个简单的DNS服务器在python中同时监听两个端口

0 python dns ports listen

我正在尝试在python中构建DNS服务器.它必须侦听两个端口(8007 - 客户端,80​​08 - 管理员).客户端仅发送URL并接收相应的IP.管理员有权更改DNS表(添加,删除,...现在对此无关紧要).

所以我的问题是:如何在两个端口上连续监听服务器以获取任何最终请求(我们可以同时拥有多个客户端,但只有一个管理员在运行时)

我的服务器有一个监听端口:

来自SocketServer import*from threading import*from string import*import socket

    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()
Run Code Online (Sandbox Code Playgroud)

nos*_*klo 5

无需使用线程.

使用扭曲.

TwistedNames支持dns服务器开箱即用.您可以根据需要对其进行自定义,也可以在构建自己的源时将其作为基础读取.