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-easyui关闭tab自动切换到前一个tab
Jul 29 Javascript
jQuery基本选择器选择元素使用介绍
Apr 18 Javascript
jquery 列表双向选择器之改进版
Aug 09 Javascript
Linux下使用jq友好的打印JSON技巧分享
Nov 18 Javascript
JS解析XML实例分析
Jan 30 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
Sep 23 Javascript
js遍历json的key和value的实例
Jan 22 Javascript
JavaScript在控件上添加倒计时功能的实现代码
Jul 04 Javascript
JS按钮闪烁功能的实现代码
Jul 21 Javascript
使用vux实现上拉刷新功能遇到的坑
Feb 08 Javascript
vue实现虚拟列表功能的代码
Jul 28 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
Aug 20 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
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
phpmyadmin MySQL 加密配置方法
2009/07/05 PHP
《PHP编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
php图片上传类 附调用方法
2016/05/15 PHP
Yii2下点击验证码的切换实例代码
2017/03/14 PHP
PHP读取word文档的方法分析【基于COM组件】
2017/08/01 PHP
thinkPHP框架整合tcpdf插件操作示例
2018/08/07 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
2019/03/01 PHP
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
JavaScript动态改变表格单元格内容的方法
2015/03/30 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
vue中的event bus非父子组件通信解析
2017/10/27 Javascript
vue使用axios上传文件(FormData)的方法
2019/04/14 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
[01:10]DOTA2亚洲邀请赛 征战号角响彻全场
2015/01/06 DOTA
详解Python函数作用域的LEGB顺序
2016/05/14 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
django 中使用DateTime常用的时间查询方式
2019/12/03 Python
python脚本后台执行方式
2019/12/21 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
python文件路径操作方法总结
2020/12/21 Python
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
Chi Chi London官网:购买连衣裙和礼服
2020/10/25 全球购物
物业经理求职自我评价
2013/09/22 职场文书
个人简历自荐信
2013/12/05 职场文书
文明家庭先进事迹材
2014/01/27 职场文书
小学音乐课教学反思
2016/02/18 职场文书
Vue vee-validate插件的简单使用
2021/06/22 Vue.js
TV动画《史上最强大魔王转生为村民A》番宣CM公布
2022/04/01 日漫
Python中requests库的用法详解
2022/06/05 Python