node中一个基本的HTTP客户端向本地的HTTP服务器发送数据
上一篇讲到了node可以轻松的向其他请求数据.
这一篇就来讲讲向本地服务器的数据交互.
HTTP服务器代码,s.js
var http=require("http");
var server=http.createServer(function(req,res){
if(req.url!=="/favicon.ico"){
req.on("data",function(data){
console.log("服务器接受到的数据:"+data);
res.end();
})
}
});
server.listen(1337,"127.0.0.1",function(){
console.log("开始监听端口"+server.address().port+".....");
});
HTTP客户端代码,c.js:
var http=require("http");
var options={
hostname:"localhost",
port:1337,
path:"/",
method:"POST"
};
var req=http.request(options);
req.write("你好");
req.end("再见.");
先运行服务器端代码,在运行客户端代码;结果是:

既然服务器可以接受客户端的代码,理所当然的是可以向客户端发送数据.
修改上面的代码,s.js:
var http=require("http");
var server=http.createServer(function(req,res){
if(req.url!=="/favicon.ico"){
req.on("data",function(data){
console.log("服务器接受到的数据:"+data);
res.write("来自于服务器端的你好!!");
res.write("来自于服务器端的再见!!");
res.end();
});
}
});
server.listen(1337,"127.0.0.1",function(){
console.log("开始监听端口"+server.address().port+".....");
});
c.js代码:
var http=require("http");
var options={
hostname:"localhost",
port:1337,
path:"/",
method:"POST"
};
var req=http.request(options,function(res){
res.on("data",function(chunk){
console.log("客户端接收到的数据:"+chunk);
});
});
req.write("你好");
req.end("再见.");
运行代码:
s.js:

c.js:

http.ServerResponse对象的addTrailers方法在服务器端响应数据的尾部追加一个头信息,在客户端接受到这个被追加的数据之后,可以在回调函数中通过回调函数的参数的参数值对象,即一个http.IncomingMessage对象的trailers属性获取信息.
继续修改上面的代码:
s.js
var http=require("http");
var server=http.createServer(function(req,res){
if(req.url!=="/favicon.ico"){
req.on("data",function(data){
console.log("服务器接受到的数据:"+data);
res.write("来自于服务器端的你好!!");
res.write("来自于服务器端的再见!!");
//res.end();
});
req.on("end",function(){
res.addTrailers({"Content-MD5":"7895bf4b8828b55ceaf47747b"});
res.end();
});
}
});
server.listen(1337,"127.0.0.1",function(){
console.log("开始监听端口"+server.address().port+".....");
});
c.js
var http=require("http");
var options={
hostname:"localhost",
port:1337,
path:"/",
method:"POST"
};
var req=http.request(options,function(res){
res.on("data",function(chunk){
console.log("客户端接收到的数据:"+chunk);
});
res.on("end",function(){
console.log("Trailer头信息:%j",res.trailers);
});
});
req.write("你好");
req.end("再见.");
运行代码:
s.js

c.js

不知道为什么客户端的信息会重复输出两遍.
有哪位大神知道的,敬请指点.
拜拜,睡觉.
node中一个基本的HTTP客户端向本地的HTTP服务器发送数据的更多相关文章
- C语言Socket-单工通信(客户端向服务器发送数据)
服务端(server) #include <stdio.h> #include <winsock2.h> #pragma comment(lib,"ws2_32.li ...
- Unix lrzsz命令 上传本地文件到服务器 / 发送文件到客户端
第三方教程:https://www.jb51.net/article/73690.htm 安装命令: $ yum install lrzsz 本地上传文件到服务器,如果是xshell,直接拖拽文件进入 ...
- linux系统中启动mysql方式已经客户端如和连接mysql服务器
零点间的记录 一.启动方式1.使用linux命令service 启动:service mysqld start2.使用 mysqld 脚本启动:/etc/inint.d/mysqld start3.使 ...
- 【Azure Developer】在Azure VM (Windows) 中搭建 kafka服务,并且通过本地以及远程验证 发送+消费 消息
问题描述 查看了 "How to Install and Run Apache Kafka on Windows? " 一文后,成功安装了Kafka服务,但是如何使用呢?如何在其他 ...
- Guzzle 一个PHP的HTTP客户端
Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上. https://github.com/guzzle/guzzle 接口简单:构建查询语句.POST请求. ...
- server-sent-event使用流信息向客户端发送数据
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- SSH服务器与Android通信(3)--Android客户端发送数据
Android客户端向SSH服务器发送数据主要有三种情况:通过客户端删除数据.添加数据和修改数据. 1.删除数据 先看看jsp文件里面是怎样删除数据的: <td align="cent ...
- C语言Socket-模拟远程CMD(客户端向服务器发送命令,服务器执行该命令)
服务端(server) #include <stdio.h> #include <winsock2.h> #pragma comment(lib,"ws2_32.li ...
- Node中的http模块
通过Node模块,我们可以实现客户端和服务器端.这篇文章主要研究如何利用http和一些相关模块构建客户端和服务器端代码.读完本文,将能够实现client向server发送数据,而server将数据原样 ...
随机推荐
- 主题模型︱几款新主题模型——SentenceLDA、CopulaLDA、TWE简析与实现
百度最近开源了一个新的关于主题模型的项目.文档主题推断工具.语义匹配计算工具以及基于工业级语料训练的三种主题模型:Latent Dirichlet Allocation(LDA).SentenceLD ...
- [置顶]
如何用PYTHON代码写出音乐
如何用PYTHON代码写出音乐 什么是MIDI 博主本人虽然五音不全,而且唱歌还很难听,但是还是非常喜欢听歌的.我一直在做这样的尝试,就是通过人工智能算法实现机器自动的作词和编曲(在这里预告下,通过深 ...
- gdi+ 中发生一般性错误 wpf解决方法
错误背景:原来在winform程序中写了一个窗口,在wpf应用程序中调用显示了这个窗口,有个头像功能,加载本地的一个图片文件,加载前进行了各种逻辑判断,效果如下: 而加载的关键代码如下面: pictu ...
- IPv4地址范围和一些小知识
IP地址范围: 保留地址(私有IP地址): 10.0.0.0——10.255.255.255 172.16.0.0——172.31.255.255 192.168.0.0——192.1 ...
- js实现百度,淘宝搜索功能
Common.js //封装类名 function byClassName(sClassName){ if(document.getElementsBYClassName){ return d ...
- mysql查询慢之后
|--缘起:早上刚一到公司就反映公司网站爆卡,线上erp完全无法使用,赶紧扔掉手中包子. --------------------------------------- |--排查:开发中会经常发现开 ...
- Javascrpt 速成篇】 三:js事件处理
ie和chrome,firefox的事件处理,除了函数名字不同,基本大同小异.这样就已chrome为主了,对ie有兴趣的自己去百度.jquery已经处理不同浏览器兼容性问题,推荐使用. 事件处理有两种 ...
- Windows中cmd操作mysql
打开CMD 将工作目录切换到MySQL的bin下 mysql -u root -p 输入密码即可登陆MySQL 问号可以查看帮助 首先需要选择操作的数据库use database_name 然后可以进 ...
- Jmeter用表格查看结果
Sample#:编号类似id Start Time:开始时间 Thread Name:线程名称 Label:请求名称 Sample Time:取样时间ms Status:状态 Bytes:接受字节数 ...
- 每天一个linux命令(文件操作):【转载】find 命令的参数详解
find一些常用参数的一些常用实例和一些具体用法及注意事项. 1.使用name选项: 文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用.可以使用某种文件名模式来匹配文件 ...