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 相关文章推荐
兼容FireFox 的 js 日历 支持时间的获取
Mar 04 Javascript
Js 中debug方式
Feb 07 Javascript
javascript基本包装类型介绍
Apr 10 Javascript
原生js制作简单的数字键盘
Apr 24 Javascript
javascript父子页面通讯实例详解
Jul 17 Javascript
JS实现的左侧竖向滑动菜单效果代码
Oct 19 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
Aug 01 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
Dec 16 Javascript
小程序图片剪裁加旋转的示例代码
Jul 10 Javascript
如何理解Vue的v-model指令的使用方法
Jul 19 Javascript
JavaScript实现旋转木马轮播图
Mar 16 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
Apr 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
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
第十二节 类的自动加载 [12]
2006/10/09 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
php实现通过ftp上传文件
2015/06/19 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
详解Laravel视图间共享数据与视图Composer
2016/08/04 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
vs2003 js文件编码问题的解决方法
2010/03/20 Javascript
javascript复制对象使用说明
2011/06/28 Javascript
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
2013/03/11 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
JavaScript中in和hasOwnProperty区别详解
2017/08/04 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
微信小程序按钮去除边框线分享页面功能
2018/08/27 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
微信小程序常用的3种提示弹窗实现详解
2019/09/19 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
[03:14]2014DOTA2西雅图国际邀请赛 EG战队巡礼
2014/07/07 DOTA
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
python实现关键词提取的示例讲解
2018/04/28 Python
python实现定时发送qq消息
2019/01/18 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
python pillow模块使用方法详解
2019/08/30 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
2020/10/15 Python
学期评语大全
2014/04/30 职场文书
大国崛起日本观后感
2015/06/02 职场文书
婚庆主持词大全
2015/06/30 职场文书
初中军训感言
2015/08/01 职场文书
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
电脑只能进入安全模式无法正常启动的解决办法
2022/04/08 数码科技