node.js http server和client

server.js

/*
var http = require("http");
var url = require("url");
var util = require("util");

http.createServer(function(req, res){
    res.writeHead(200, {"Content-Type":"text/plain; charset=utf-8"});
    //res.end(util.inspect(url.parse(req.url, true)));

    //解析 url 参数
    var params = url.parse(req.url, true).query;
    res.write("网站名:" + params.name);
    res.write("\n");
    res.write("网站 URL: " + params.url);
    res.end();
}).listen(3000);*/

/*
var http = require("http");
var querystring = require("querystring");

http.createServer(function(req, res){
   //定义了一个post变量,用于暂存请求体的信息
   var post = "";
   //通过req的data事件监听函数,每当接收到请求体的数据,就累加到post变量中
    req.on("data", function(chunk){
        post += chunk;
    });
    //在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式,然后向客户端返回
    req.on("end", function(){
        post = querystring.parse(post);
        res.end(util.inspect(post));
    });
}).listen(3000);*/
/*

var http = require("http");
var querystring = require("querystring");

var postHTML = '<html><head><meta charset="utf-8"><title>菜鸟教程 Node.js 实例</title> </head>'
    + '<body>' +
    '<form method="post">' +
    '网站名:<input name="name"><br> ' +
    '网站 URL: <input name="url">' +
    '<input type="submit">' +
    '</form> ' +
    '</body>'
'</body></html>';

http.createServer(function (req, res) {
    var body = "";
    req.on("data", function(chunk){
        body += chunk;
    });
    req.on("end", function () {
        //解析参数
        body = querystring.parse(body);
        //设置响应头部信息及编码
        res.writeHead(200, {"Content-Type":"text/html; charset=utf8"});
        //输出提交的数据
        if(body.name && body.url){
            res.write("网站名:" + body.name);
            res.write("<br>");
            res.write("网站 URL: " + body.url);
        }else{
            //输出表单
            res.write(postHTML);
        }
        res.end();
    })
}).listen(3000);

*/


var http = require("http");
var fs = require("fs");
var url = require("url");

//创建服务器
http.createServer(function(request, response){
    //解析请求,包括文件名
    var pathname = url.parse(request.url).pathname;
    //输出请求的文件名
    console.log("Request for " + pathname + " received.");
    //从文件系统中读取请求的文件内容
    fs.readFile(pathname.substr(1), function (err, data) {
        if(err){
            console.log(err);
            //HTTP 状态码:404:NOT FOUND
            //Content Type: text/plain
            response.writeHead(404, {"Content-Type": "text/html"});
        }else{
            //HTTP 状态码: 300 : OK
            //Content Type: text/plain
            response.writeHead(200, {"Content-Type":"text/html"});
            //响应文件内容
            response.write(data.toString());
        }
        //发送响应数据
        response.end();

    });
}).listen(8081);

//控制台会输出以下信息
console.log("Server running at http://localhost:8081");

client.js

var http = require("http");
//用于请求的选项
var options={
    host : "localhost",
    port : "8081",
    path : "/index.html"
};

// 处理响应的回调函数
var callback = function(response){
    //不断更新数据
    var body  = "";
    response.on("data", function(data){
        body += data;
    });
    response.on("end", function () {
        //数据接收完成
        console.log(body);
    });
}

//向服务端发送请求
var req = http.request(options, callback);
req.end();

转载于:https://my.oschina.net/u/151615/blog/1475413

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值