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中的屏蔽的使用示例
Jul 30 Javascript
jquery制作弹窗提示窗口代码分享
Mar 02 Javascript
javascript 操作符(~、&amp;、|、^、)使用案例
Dec 31 Javascript
JavaScript中的比较操作符&gt;、=、
Dec 31 Javascript
jquery+ajax实现直接提交表单实例分析
Jun 17 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
Jan 19 Javascript
微信小程序 向左滑动删除功能的实现
Mar 10 Javascript
vue脚手架vue-cli的学习使用教程
Jun 06 Javascript
vue props传值失败 输出undefined的解决方法
Sep 11 Javascript
Django模板继承 extend标签实例代码详解
May 16 Javascript
vue+express+jwt持久化登录的方法
Jun 14 Javascript
vue proxy 的优势与使用场景实现
Jun 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
PHP 基于文件头的文件类型验证类函数
2012/05/01 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
PHP实现的DES加密解密类定义与用法示例
2020/11/02 PHP
jQuery基础框架浅入剖析
2012/12/27 Javascript
windows系统下简单nodejs安装及环境配置
2013/01/08 NodeJs
JS复制内容到剪切板的实例代码(兼容IE与火狐)
2013/11/19 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
JavaScript继承与聚合实例详解
2019/01/22 Javascript
新手快速入门微信小程序组件库 iView Weapp
2019/06/24 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
微信小程序实现原生步骤条
2019/07/25 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
用pickle存储Python的原生对象方法
2017/04/28 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
python爬虫解决验证码的思路及示例
2019/08/01 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
2020/02/27 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
2021/02/26 Python
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
关于iframe跨域使用postMessage的实现
2019/10/29 HTML / CSS
西班牙家用电器和电子产品购物网站:Mi Electro
2019/02/25 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
工业自动化毕业生自荐信范文
2014/01/04 职场文书
体育教学随笔感言
2014/02/24 职场文书
经典公益广告词
2014/03/13 职场文书
离婚协议书标准格式
2014/10/04 职场文书
迎国庆横幅标语
2014/10/08 职场文书
早上好问候语大全
2015/11/10 职场文书