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 相关文章推荐
js使下拉列表框可编辑不止是选择
Dec 12 Javascript
js实现字符串的16进制编码不加密
Apr 25 Javascript
javascript框架设计读书笔记之字符串的扩展和修复
Dec 02 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
Mar 11 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
Mar 18 Javascript
判断输入的字符串是否是日期格式的简单方法
Jul 11 Javascript
浅谈Node.js 沙箱环境
May 15 Javascript
Vue项目中最新用到的一些实用小技巧
Nov 06 Javascript
微信小程序云开发如何使用云函数生成二维码
May 18 Javascript
vue中 数字相加为字串转化为数值的例子
Nov 07 Javascript
详解JS函数防抖
Jun 05 Javascript
Vue实现圆环进度条的示例
Feb 06 Vue.js
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音乐采集(部分代码)
2007/02/14 PHP
PHP中获取文件扩展名的N种方法小结
2012/02/27 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
用js实现上传图片前的预览(TX的面试题)
2007/08/14 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
jQuery判断iframe中元素是否存在的方法
2013/05/11 Javascript
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
纯javascript实现分页(两种方法)
2015/08/26 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
jQuery中layer分页器的使用
2017/03/13 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
基于vue+element实现全局loading过程详解
2020/07/10 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
2020/09/21 Javascript
[01:04:06]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第一局
2016/02/26 DOTA
python采用getopt解析命令行输入参数实例
2014/09/30 Python
跟老齐学Python之复习if语句
2014/10/02 Python
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
python图片验证码生成代码
2016/07/02 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
python多进程间通信代码实例
2019/09/30 Python
Python random模块的使用示例
2020/10/10 Python
结合CSS3的新特性来总结垂直居中的实现方法
2016/05/30 HTML / CSS
CHRONEXT英国:您的首选奢华腕表目的地
2020/03/30 全球购物
幼儿园安全责任书
2014/04/14 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP
能让Python提速超40倍的神器Cython详解
2021/06/24 Python
在HTML中引入CSS的几种方式介绍
2021/12/06 HTML / CSS
Docker部署Mysql8的实现步骤
2022/07/07 Servers