我正在开发Node.js中的DNS服务器,(是的,也许这很愚蠢,但它只是4个乐趣)。我的服务器正在侦听端口53 UDP,我正在调试所有数据。为了尝试它,我只是将系统中的DNS服务器(Windows)更改为localhost。我收到了奇怪的字符串:
这是我的nodeJS服务器,一个侦听端口53 UDP并输出所有数据的简单服务器。
var PORT = 53;
var HOST = '127.0.0.1';
var dgram = require('dgram');
var server = dgram.createSocket('udp4');
server.on('listening', function () {
var address = server.address();
console.log('UDP Server listening on ' + address.address + ":" + address.port);
});
server.on('message', function (message, remote) {
var StringDecoder = require('string_decoder').StringDecoder;
var decoder = new StringDecoder('utf8');
var cent = new Buffer(message);
val = decoder.write(cent);
console.log( val);
});
server.bind(PORT, HOST);
我的问题是,有没有办法从这些字符串中提取网址?
答案 0 :(得分:1)
您正在使用DNS有线格式数据,将它们视为UTF-8编码字符串并打印结果。由于DNS有线格式远不是基于字符串的(更不用说UTF-8),因此这不是很有用。如果您想要了解有线格式,您必须知道它是如何工作的,并根据其规格进行解析。首先阅读RFC 1035。