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(JS) 压缩 / 混淆 / 格式化 批处理工具
Dec 10 Javascript
js对象与打印对象分析比较
Apr 23 Javascript
JS继承用法实例分析
Feb 05 Javascript
在HTML中插入JavaScript代码的示例
Jun 03 Javascript
Angularjs全局变量被作用域监听的正确姿势
Feb 06 Javascript
JSON字符串和JSON对象相互转化实例详解
Jan 05 Javascript
js中作用域的实例解析
Mar 16 Javascript
详解Puppeteer前端自动化测试实践
Feb 21 Javascript
微信小程序登录态和检验注册过没的app.js写法
May 22 Javascript
vue实现图片按比例缩放问题操作
Aug 11 Javascript
react实现复选框全选和反选组件效果
Aug 25 Javascript
解决新建一个vue项目过程中遇到的问题
Oct 22 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之Memcache学习笔记
2013/06/17 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
JS中获取数据库中的值的方法
2013/07/14 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
2014/12/16 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
jQuery实现文件上传进度条特效
2015/08/12 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
jQuery xml字符串的解析、读取及查找方法
2016/03/01 Javascript
微信小程序加载更多 点击查看更多
2016/11/29 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
详解js获取video任意时间的画面截图
2019/04/17 Javascript
React+Redux实现简单的待办事项列表ToDoList
2019/09/29 Javascript
使用python编写脚本获取手机当前应用apk的信息
2014/07/21 Python
Python贪吃蛇游戏编写代码
2020/10/26 Python
python进阶_浅谈面向对象进阶
2017/08/17 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
python实现本地批量ping多个IP的方法示例
2019/08/07 Python
Python collections模块使用方法详解
2019/08/28 Python
Python 切分数组实例解析
2019/11/07 Python
Python定义函数时参数有默认值问题解决
2019/12/19 Python
让你相见恨晚的十个Python骚操作
2020/11/18 Python
运动会广播稿30字
2014/01/21 职场文书
《蜗牛》教学反思
2014/02/18 职场文书
《满井游记》教学反思
2014/02/26 职场文书
工作分析计划书
2014/04/30 职场文书
和谐家庭事迹材料
2014/12/20 职场文书
新娘父亲婚礼致辞
2015/07/27 职场文书
干部作风纪律整顿心得体会
2016/01/23 职场文书