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 相关文章推荐
javascript string字符串优化问题
Jul 31 Javascript
浅谈JavaScript中的Math.atan()方法的使用
Jun 14 Javascript
分享jQuery插件的学习笔记
Jan 14 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
Apr 01 Javascript
深入理解node exports和module.exports区别
Jun 01 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
Jun 08 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
Aug 16 Javascript
开发Vue树形组件的示例代码
Dec 21 Javascript
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 jQuery
对angular2中的ngfor和ngif指令嵌套实例讲解
Sep 12 Javascript
JS实现换肤功能的方法实例详解
Jan 30 Javascript
js实现搜索提示框效果
Sep 05 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
第1次亲密接触PHP5(1)
2006/10/09 PHP
php生成文件
2007/01/15 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
JavaScript 学习小结(适合新手参考)
2009/07/30 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
js随机生成网页背景颜色的方法
2015/02/26 Javascript
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
es7学习教程之Decorators(修饰器)详解
2017/07/21 Javascript
将Sublime Text 3 添加到右键中的简单方法
2017/12/12 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
NodeJS配置CORS实现过程详解
2020/12/02 NodeJs
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
利用Python爬取可用的代理IP
2016/08/18 Python
python2.7实现邮件发送功能
2018/12/12 Python
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
如何快速一次性卸载所有python包(第三方库)呢
2020/10/20 Python
推荐WEB开发者最佳HTML5和CSS3代码生成器
2015/11/24 HTML / CSS
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
全球最大最受欢迎的旅游社区:Tripadvisor
2017/11/03 全球购物
总经理办公室主任岗位职责
2013/11/12 职场文书
售后主管岗位职责
2013/12/08 职场文书
小学班主任培训方案
2014/06/04 职场文书
初中运动会前导词
2015/07/20 职场文书
高中优秀作文(范文)
2019/08/15 职场文书
Django如何与Ajax交互
2021/04/29 Python
Python jiaba库的使用详解
2021/11/23 Python