node.js使用net模块创建服务器和客户端示例【基于TCP协议】


Posted in Javascript onFebruary 14, 2020

本文实例讲述了node.js使用net模块创建服务器和客户端。分享给大家供大家参考,具体如下:

node.js中net模块创建服务器和客户端

1.node.js中net模块创建服务器(net.createServer)

// 将net模块 引入进来
var net = require("net");
// 创建一个net.Server用来监听,当连接进来的时候,就会调用我们的函数
// client_sock,就是我们的与客户端通讯建立连接配对的socket
// client_sock 就是与客户端通讯的net.Socket
var server = net.createServer(function(client_sock) {
 console.log("client comming", client_sock.remoteAddress, client_sock.remotePort);
 // 设置你接受的格式,
 // client_sock.setEncoding("utf8");
 // client_sock.setEncoding("hex"); // 转成二进制的文本编码
 //
 // 客户端断开连接的时候处理,用户断线离开了
 client_sock.on("close", function() {
 console.log("close socket");
 });
 // 接收到客户端的数据,调用这个函数
 // data 默认是Buffer对象,如果你强制设置为utf8,那么底层会先转换成utf8的字符串,传给你
 // hex 底层会把这个Buffer对象转成二进制字符串传给你
 // 如果你没有设置任何编码 <Buffer 48 65 6c 6c 6f 57 6f 72 6c 64 21>
 // utf8 --> HelloWorld!!!  hex--> "48656c6c6f576f726c6421"
 client_sock.on("data", function(data) {
 console.log(data);
 client_sock.write("goodbye!!!");
 client_sock.end(); // 正常关闭
 });
 client_sock.on("error", function(err) {
 console.log("error", err);
 });
});
// 当我开始监听的时候就会调用这个回掉函数
server.on("listening", function() {
 console.log("start listening...");
});
// 监听发生错误的时候调用
server.on("error", function() {
 console.log("listen error");
});
server.on("close", function() {
 console.log("server stop listener");
});
/*
server.on("connection", function(client_sock) {
 console.log("client comming 22222");
});
*/
// 编写代码,指示这个server监听到哪个端口上面。
// 127.0.0.1: 6080
// node就会来监听我们的server,等待连接接入
server.listen({
 port: 6080,
 host: "127.0.0.1",
 exclusive: true,
});
// 停止node对server的监听事件处理,那么node就没有其他的事件要处理,所以就退出了。
// server.unref(); // 取消node,对server的事件的监听;
// server.close(); // 主动的掉这个server.close才会触发这个net.Server的close事件

2.node.js中net模块创建客户端(net.connect())

var net = require("net");
// net.Socket,
var sock = net.connect({
 port: 6080,
 host: "127.0.0.1",
}, function() {
 console.log('connected to server!');
});
// 连接成功调用的事件
sock.on("connect",function() {
 console.log("connect success");
 // 在这里我们就可以发送数据了
 sock.write("HelloWorld!", "utf8");
 // end
});
// end
// 有错误发生调用的事件
sock.on("error", function(e) {
 console.log("error", e);
});
// socket关闭的事件
sock.on("close", function() {
 console.log("close");
});
// 对方发送了关闭数据包过来的事件
sock.on("end", function() {
 console.log("end event");
});
// 当有数据发生的时候,调用;
sock.on("data", function(data) {
 console.log(data);
});

希望本文所述对大家node.js程序设计有所帮助。

Javascript 相关文章推荐
JQUERY 浏览器判断实现函数
Aug 20 Javascript
JavaScript 基础篇(一)
Mar 30 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
Apr 07 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
May 09 Javascript
Bootstrap所支持的表单控件实例详解
May 16 Javascript
JavaScript基础重点(必看)
Jul 09 Javascript
微信支付 JS API支付接口详解
Jul 11 Javascript
Highcharts学习之坐标轴
Aug 02 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&amp;”)
Dec 23 Javascript
原生JS和jQuery操作DOM对比总结
Jan 19 Javascript
详解微信小程序 登录获取unionid
Jun 27 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
Aug 15 Javascript
node事件循环和process模块实例分析
Feb 14 #Javascript
vue+springboot图片上传和显示的示例代码
Feb 14 #Javascript
JavaScript简单编程实例学习
Feb 14 #Javascript
JS实现打砖块游戏
Feb 14 #Javascript
从零使用TypeScript开发项目打包发布到npm
Feb 14 #Javascript
JavaScript中的this原理及6种常见使用场景详解
Feb 14 #Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
Feb 14 #Javascript
You might like
php curl的深入解析
2013/06/02 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
python进程与线程小结实例分析
2018/11/11 PHP
jQuery 性能优化指南(3)
2009/05/21 Javascript
常用Extjs工具:Extjs.util.Format使用方法
2012/03/22 Javascript
jQuery function的正确书写方法
2013/08/02 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
jQuery实现html元素拖拽
2015/07/21 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
XML文件转化成NSData对象的方法
2015/08/12 Javascript
jQuery超简单选项卡完整实例
2015/09/26 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
2017/02/15 Javascript
Vue动态实现评分效果
2017/05/24 Javascript
AngularJS 仿微信图片手势缩放的实例
2017/09/28 Javascript
12条写出高质量JS代码的方法
2018/01/07 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
python生成器的使用方法
2013/11/21 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
使用python实现滑动验证码功能
2019/08/05 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
numpy库reshape用法详解
2020/04/19 Python
python实现人像动漫化的示例代码
2020/05/17 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
CSS3对背景图片的裁剪及尺寸和位置的设定方法
2016/03/07 HTML / CSS
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
季度思想汇报
2014/01/01 职场文书
小学阳光体育活动总结
2014/07/05 职场文书
乡镇个人对照检查材料
2014/08/22 职场文书
婚礼证婚人演讲稿
2014/09/13 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
观看《筑梦中国》纪录片心得体会
2016/01/18 职场文书
深入理解python协程
2021/06/15 Python