zoukankan      html  css  js  c++  java
  • Node学习笔记

    向服务器发送数据

    服务器端处理表单

    var qs=require('querystring');
    require('http').createServer(function(req,res){
        var body='';
        req.on('data',function(chunk){
            body+=chunk;
        });
        req.on('end',function(){
            res.writeHead(200);
            res.end('Done');
            console.log('
     got name 33[90m'+qs.parse(body).name+'33[39m
    ');
        }); 
    }).listen(3000);

    小tip:Node提供了querystring模块,可以方便对URL字符串进行解析,将一个字符串解析成一个对象,这样可以像处理头部信息对其进行处理

    客户端对应的处理

    var http=require('http'),qs=require('querystring')
    function send(theName){
        http.request({
        host:'127.0.0.1'
        ,port:3000
        ,url:'/'
        ,method:'POST'
    },function(res){
        res.on('data'function(){});
        res.setEncoding('utf8');
        res.on('end',function(){
            console.log('
     33[90m request complete!33[39m');
            process.stdout.write('
     your name:');
        });
    }).end(qs.stringify({name:theName}));
    }
    process.stdout.write('
     your name:');
    process.stdin.resume();
    process.stdin.setEncoding('utf-8');
    process.stdin.on('data',function(name){
        send(name.replace('
    ',''));
    });

    在上述代码中,数据是通过end方法发送的,和在服务器创建响应的方式一样。无须担心从服务器获取数据块的问题,当end事件减触发时,可以将完整的请求数据打印处来。

    使用 http.request() 时,必须调用 req.end(),以此来向服务器表明请求结束,即使请求的主体中没有任何数据。这里请求中的数据是name。

    有一个问题是,我发现要触发end事件,必须触发一个data事件(粗体部分),这样才能打印处end事件中的内容

  • 相关阅读:
    高斯拉普拉斯算子(Laplace of Gaussian)
    Windows的TCP协议参数
    poj 1182食物链(并查集)
    linux网络体系架构
    谈谈对于企业级系统架构的理解
    Redis源码解析(1)——源码目录介绍
    在多台服务器上简单实现Redis的数据主从复制
    利用Nginx做负载均衡
    C#中的BackgroundWorker控件
    C#中的线程(四)高级话题
  • 原文地址:https://www.cnblogs.com/pengshuo/p/6668895.html
Copyright © 2011-2022 走看看