Node.js实现web解析DNS(四)
来源:互联网 发布:东方知乎 编辑:程序博客网 时间:2024/06/06 08:27
所有创建的文件都要在一个文件夹下。
代码如下:
index.html:
mainIndex.js:
var fs=require('fs');
var url=require('url');
exports.goIndex=function(res) {
var readPath='./'+url.parse('index.html').pathname;
var indexpage=fs.readFileSync(readPath);
res.end(indexpage);
}
parse_dns_ex.js:
var http=require('http');
var url=require('url');
var router=require('./router.js');
//res是response,req是request,res是处理HTTP的响应事件,req处理HTTP的请求事件。
//req中包含了用户请求的http头以及请求的一些参数,根据req中的方法和属性,可以获取客户端传递的参数。
//res为相应客户端请求对象,该对象包含了一些http响应属性额方法,通过该对象响应数据到客户端。
http.createServer(function(req,res){
//这里分为两个页面,一个是最初查找的页面,第二个是显示结果的页面。所以这里的pathname有两个,分别为/和/parse.
var pathname=url.parse(req.url).pathname;
console.log('pathname:'+pathname);
req.setEncoding("utf8");
res.writeHead(200,{'Content-Type':'text/html'});
//根据pathname来决定显示什么页面。
router.router(res,req,pathname);
}).listen(3000,"127.0.0.1");
parse_dns.js:
var querystring=require('querystring');
var dns=require('dns');
//Node.js中 req对象有一个addListener方法来获取http的post的参数,这个接口是一个异步的方法,携带的两个事件分别是data和end。
//data是指当有数据传递到服务器时触发的事件,而end则表示客户端所有数据传递完毕后触发的事件。
//因此在服务器判断所有数据接受完毕后,执行回调函数来获取post的参数,得到post参数后才执行相应逻辑getDns。
exports.parseDns=function(res,req){
var postData="";
req.addListener("data",function(postDataChunk){
postData+=postDataChunk;
});
req.addListener("end",function () {
//在这里首先会调用getDns这个函数,在执行到getDns这个函数最后一行时,会调用传进去的回调函数。
//即下面长长的一段function。将刚刚得到的domain和相对应的addresses通过html来显示出来。
var retData=getDns(postData,function (domain,addresses) {
res.writeHead(200,{'Content-Type':'text/html'});
res.end("
});
return;
});
}
function getDns(postData,callback) {
//得到需要查找的内容。
var domain=querystring.parse(postData).search_dns; //因为在html文件中,那个输入框的名字是search_dns.
dns.resolve(domain,function (err,addresses) {
//addresses为得到的各个域名。
if (!addresses) {
addresses=['不存在域名'];
}
callback(domain,addresses);
});
}
router.js:
var mainindex=require('./mainIndex.js');
var parse_dns=require('./parse_dns.js');
exports.router=function(res,req,pathname){
switch(pathname) {
//如果是解析的页面。
case "/parse":
parse_dns.parseDns(res,req);
break;
default:
//如果是查找的页面。
mainindex.goIndex(res);
break;
}
}
然后在命令行中运行node parse_dns_ex.js
然后打开浏览器,输入:http://127.0.0.1:3000
出现如下界面:
输入www.qq.com,点击查询,出现如下结果:
Domain:www.qq.comIP:101.226.103.106,101.226.129.158
代码如下:
index.html:
mainIndex.js:
var fs=require('fs');
var url=require('url');
exports.goIndex=function(res) {
}
parse_dns_ex.js:
var http=require('http');
var url=require('url');
var router=require('./router.js');
//res是response,req是request,res是处理HTTP的响应事件,req处理HTTP的请求事件。
//req中包含了用户请求的http头以及请求的一些参数,根据req中的方法和属性,可以获取客户端传递的参数。
//res为相应客户端请求对象,该对象包含了一些http响应属性额方法,通过该对象响应数据到客户端。
http.createServer(function(req,res){
}).listen(3000,"127.0.0.1");
parse_dns.js:
var querystring=require('querystring');
var dns=require('dns');
//Node.js中 req对象有一个addListener方法来获取http的post的参数,这个接口是一个异步的方法,携带的两个事件分别是data和end。
//data是指当有数据传递到服务器时触发的事件,而end则表示客户端所有数据传递完毕后触发的事件。
//因此在服务器判断所有数据接受完毕后,执行回调函数来获取post的参数,得到post参数后才执行相应逻辑getDns。
exports.parseDns=function(res,req){
Domain:"+domain+
" IP:"+addresses.join(',')+"
");}
function getDns(postData,callback) {
}
router.js:
var mainindex=require('./mainIndex.js');
var parse_dns=require('./parse_dns.js');
exports.router=function(res,req,pathname){
}
然后在命令行中运行node parse_dns_ex.js
然后打开浏览器,输入:http://127.0.0.1:3000
出现如下界面:
输入www.qq.com,点击查询,出现如下结果:
Domain:www.qq.comIP:101.226.103.106,101.226.129.158
0 0
- Node.js实现web解析DNS(四)
- Node.JS解析DNS(NodeJS开发实战详解)
- node.js学习(十六、DNS模块)
- Node.js DNS模块
- 【Node.js基础篇】(四)Node.js实现文件路由功能
- 自己开发简单web服务器二(Node.js实现)
- 域名系统DNS(四)转发/解析
- Node.js实现WEB 服务开发
- Node.js中的DNS模块
- 深入浅出Node.js(四):Node.js的事件机制
- 深入浅出Node.js(四):Node.js的事件机制
- 深入浅出Node.js(四):Node.js的事件机制
- 深入浅出Node.js(四):Node.js的事件机制
- node.js依赖express解析post请求四种数据格式()
- 四,Node.js基础知识(2)
- node.js学习(四、redis安装)
- node.js使用(四):采集网页
- node.js学习(四)
- Node.j之错误listen EADDRNOTAVAIL
- SelectionMode 选择模式
- Node.js中的继承(六)
- Node.js中NPM简介(五)
- 黎活明给程序员的忠告
- Node.js实现web解析DNS(四)
- 图像有用区域
- Bootstrap简单HelloWorld入门教程
- Node.js模块的了解(三)
- 背包之01背包、完全背包、多重背包详解
- iOS基础网络教程-Swift版本: 2.使用UIWebView请求数据
- Node.js初步了解(二)
- 三维凸包模板(poj3528为例)
- ubuntu安装node js(一)