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 相关文章推荐
ExtJS 2.0实用简明教程 之Border区域布局
Apr 29 Javascript
Java 正则表达式学习总结和一些小例子
Sep 13 Javascript
基于javascript实现泡泡大冒险网页版小游戏
Mar 23 Javascript
jQuery 选择同时包含两个class的元素的实现方法
Jun 01 Javascript
bootstrap中使用google prettify让代码高亮的方法
Oct 21 Javascript
AngularJS动态加载模块和依赖的方法分析
Nov 08 Javascript
原生JS实现图片轮播效果
Dec 26 Javascript
详解angularjs利用ui-route异步加载组件
May 21 Javascript
Node.js实现文件上传的示例
Jun 28 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
Dec 20 Javascript
百度小程序自定义通用toast组件
Jul 17 Javascript
简单了解JS打开url的方法
Feb 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
php面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
php解决和避免form表单重复提交的几种方法
2016/08/31 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
2010/03/24 Javascript
onclick与listeners的执行先后问题详细解剖
2013/01/07 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
导航跟随滚动条置顶移动示例代码
2013/09/11 Javascript
jquery 设置style:display的方法
2015/01/29 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
给easyui datebox扩展一个清空的实例
2016/11/09 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
jQuery实现简单弹幕效果
2019/11/28 jQuery
vue+vant实现购物车全选和反选功能
2020/11/17 Vue.js
总结python爬虫抓站的实用技巧
2016/08/09 Python
基于python select.select模块通信的实例讲解
2017/09/21 Python
python 实现一个贴吧图片爬虫的示例
2017/10/12 Python
python中学习K-Means和图片压缩
2017/11/20 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
python数据化运营的重要意义
2019/11/25 Python
python 如何实现遗传算法
2020/09/22 Python
公司综合部的成员自我评价分享
2013/11/05 职场文书
厨师长岗位职责
2014/03/02 职场文书
社区娱乐活动方案
2014/08/21 职场文书
琅琊山导游词
2015/02/05 职场文书
2015年化验员工作总结
2015/04/10 职场文书
张丽莉观后感
2015/06/16 职场文书
公司联欢会主持词
2015/07/04 职场文书
我的生日感言
2015/08/03 职场文书
青年志愿者活动感想
2015/08/07 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书