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 继承实现方法
Aug 26 Javascript
几个比较实用的JavaScript 测试及效验工具
Apr 18 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
Nov 13 Javascript
限制上传文件大小和格式的jQuery插件实例
Jan 24 Javascript
jQuery实现滚动切换的tab选项卡效果代码
Aug 26 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
Jan 19 Javascript
jquery将标签元素的高设为屏幕的百分比
Apr 19 jQuery
详解tween.js 中文使用指南
Jan 05 Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
Jun 05 jQuery
基于vue.js实现分页查询功能
Dec 29 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
Feb 26 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
Apr 27 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(3)
2006/10/09 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
2013/01/19 PHP
PHP创建桌面快捷方式的实例代码
2014/02/17 PHP
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
WHOOPS PHP调试库的使用
2017/09/29 PHP
跨浏览器的设置innerHTML方法
2006/09/18 Javascript
B/S开发中常用javaScript技术与代码
2007/03/09 Javascript
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
2013/06/19 Javascript
用Javascript来生成ftp脚本的小例子
2013/07/03 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
jquery调取json数据实现省市级联的方法
2015/01/29 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
jquery中封装函数传递当前元素的方法示例
2017/05/05 jQuery
vue.js学习之UI组件开发教程
2017/07/03 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
Vue.js 2.x之组件的定义和注册图文详解
2018/06/19 Javascript
Element input树型下拉框的实现代码
2018/12/21 Javascript
JavaScript 作用域实例分析
2019/10/02 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
[01:16:28]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第二场 2月23日
2021/03/11 DOTA
使用Python抓取模板之家的CSS模板
2015/03/16 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
python使用pandas实现数据分割实例代码
2018/01/25 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
python中对_init_的理解及实例解析
2019/10/11 Python
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
班主任工作经验材料
2014/02/02 职场文书
学习之星事迹材料
2014/05/17 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书
教师节晚会主持词
2015/06/30 职场文书
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL
分析Python list操作为什么会错误
2021/11/17 Python