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.fn.extend与jquery.extend区别
Jul 13 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
Jan 28 Javascript
购物车前端开发(jQuery和bootstrap3)
Aug 27 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
Oct 09 Javascript
Bootstrap Modal遮罩弹出层(完整版)
Nov 21 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
Jan 04 Javascript
B/S(Web)实时通讯解决方案分享
Apr 06 Javascript
JavaScript通过filereader接口读取文件
May 10 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
Oct 12 Javascript
webpack3.0升级4.0的方法步骤
Apr 02 Javascript
微信小程序实现手指拖动选项排序
Apr 22 Javascript
微信小程序实现翻牌抽奖动画
Sep 21 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
解析strtr函数的效率问题
2013/06/26 PHP
php json与xml序列化/反序列化
2013/10/28 PHP
php生成txt文件标题及内容的方法
2014/01/16 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
用javascript做拖动布局的思路
2008/05/31 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
关于JS中prototype的理解
2015/09/07 Javascript
js获取上传文件的绝对路径实现方法
2016/08/02 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
2017/03/27 Javascript
jQuery遍历节点方法汇总(推荐)
2017/05/13 jQuery
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
React路由管理之React Router总结
2018/05/10 Javascript
Vuejs监听vuex中值的变化的方法示例
2018/12/02 Javascript
详解vue中移动端自适应方案
2019/05/05 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
2019/05/22 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
python脚本生成caffe train_list.txt的方法
2018/04/27 Python
Python内存泄漏和内存溢出的解决方案
2020/09/26 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
俄罗斯有趣和原创礼物网上商店:MagicMag
2019/08/01 全球购物
迪卡侬中国官网:Decathlon中国
2020/08/10 全球购物
远程学习的教学用品和家庭学习资源:Really Good Stuff
2020/04/27 全球购物
大学生暑期实践感言
2014/02/26 职场文书
十八届三中全会感言
2014/03/10 职场文书
小学数学课后反思
2014/04/23 职场文书
离婚协议书范本(2014版)
2014/09/28 职场文书
redis实现的四种常见限流策略
2021/06/18 Redis
python​格式化字符串
2022/04/20 Python
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python