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

来源:互联网 发布:电路板设计软件下载 编辑:程序博客网 时间:2024/06/02 07:28

今天初学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>
0 0
原创粉丝点击