您的位置:首页 > Web前端 > Node.js

初识Node.js<一>DNS查询的例子

2016-03-21 21:39 573 查看
今天初学node.js,看的是《Node.js开发实战详解》。配置环境简单,感觉node.js不错,一开始的例子就开始模块化开发,让我觉得特别好,js原来也这么棒。以前都是写些客户端js,没有用js写过服务器,我会坚持学下去。

这是一个DNS查询的例子,适合用来入门

入口文件

var http=require('http'),
url=require('url');
var router=require('./router.js');
http.createServer(function(req,res){
var pathname=url.parse(req.url).pathname;
req.setEncoding("utf8");
res.writeHead(200,{'Content-Type':'text/html'});
router.router(res,req,pathname);
}).listen(3000,"127.0.0.1");
console.log("server is on....3000");


路由处理模块

var ParseDns=require('./parse_dns.js'),
MainIndex=require('./main_index.js');
exports.router=function(res,req,pathname){
switch(pathname){
case '/parse':
ParseDns.parseDns(res,req);
break;
default:
MainIndex.goIndex(res,req);
}
}


DNS解析模块parse_dns.js

var querystring=require('querystring'),
dns=require('dns');
exports.parseDns=function(res,req){
//问题在这里

var postData="search_dns=www.baidu.com";

//下面这个未执行,若上面的postData不赋值,在下面调用getDns的地方会为空
req.addListener('data',function(postDataChunk){  //**********未执行
console.log("xx");                           //**********未执行
postData+=postDataChunk;                     //**********未执行
});
req.addListener('end',function(){
console.log("yy");
var retDate=getDns(postData,function(domin,address){
res.writeHead(200,{'Content-Type':'text/html'});
res.end("<html><head><meta http-equiv='content-type' content='text/html;charset=utf-8'></head><div style='text-align:center'>Domain:<span style='color:red'>"+domin+"</span>IP:<span style='color:red'>"+address.join(',')+"</span></div></html>");
});
return;
});
}
function getDns(postData,callback){
var domin=querystring.parse(postData).search_dns;
console.log(domin);
dns.resolve(domin,function(err,address){
if(!address){
address=["不存在"];
}
callback(domin,address);
});
}


首页展示模块main_index.js

var fs=require('fs'),
url=require('url');
exports.goIndex=function(res,req){
var readPath='C:/nodeJs/'+url.parse('index.html').pathname;
var indexPage=fs.readFileSync(readPath);
res.end(indexPage);
}


首页html文件index.html

<html>
<head>
<title>DNS query</title>
<meta http-equiv='content-type' content='text/html;charset=utf-8'>
</head>
<body>
<h1 style="text-align:center">DNS 查询工具</h1>
<div style="text-align:center">
<form action="/parse" method="post">
查询DNS:<input type="text" name="search_dns"/>
<input type="submit" value="查询"/>
</form>
</div>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息