【发布时间】:2009-11-18 00:44:43
【问题描述】:
我正在尝试在 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()
【问题讨论】:
-
您是否意识到此代码与 RFC1034 和 RFC1035 中定义的真实 DNS 系统无关? (参见rfc-editor.org/rfc/rfc1035.txt)
-
"如何让一个 SIMPLE DNS 服务器在 python 中同时监听两个端口"
-
正如 Adrien 所说...您知道“这不是 DNS 的工作方式”,对吧?首先,DNS 服务器不会接收 URL,它会接收针对特定记录名称和类型的特定格式查询...