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 相关文章推荐
在你的网页中嵌入外部网页的方法
Apr 02 Javascript
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
May 25 Javascript
JS判定是否原生方法
Jul 22 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
Apr 12 Javascript
BootStrap实用代码片段之一
Mar 22 Javascript
微信小程序 特效菜单抽屉效果实例代码
Jan 11 Javascript
webpack之devtool详解
Feb 10 Javascript
Node.js Buffer用法解读
May 18 Javascript
React 使用browserHistory项目访问404问题解决
Jun 01 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
Aug 07 Javascript
vue实现下拉加载其实没那么复杂
Aug 13 Javascript
JavaScript实现随机点名小程序
Oct 29 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-fpm配置详解
2014/02/12 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
一个实用的php验证码类
2017/07/06 PHP
Mootools 图片展示插件(lightbox,ImageMenu)收集集合
2010/05/21 Javascript
25个非常棒的jQuery滑块插件和教程小结
2011/09/02 Javascript
jquery 合并内容相同的单元格(示例代码)
2013/12/13 Javascript
js使用DOM操作实现简单留言板的方法
2015/04/10 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
jQuery Mobile和HTML5开发App推广注册页
2016/11/07 Javascript
基于Javascript倒计时效果
2016/12/22 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
2017/01/10 Javascript
jQuery插件echarts实现的多折线图效果示例【附demo源码下载】
2017/03/04 Javascript
jquery网页加载进度条的实现
2017/06/01 jQuery
bootstrap datepicker插件默认英文修改为中文
2017/07/28 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
JavaScript在web自动化测试中的作用示例详解
2019/08/25 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
2019/09/09 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
javascript实现时间日期的格式化的方法汇总
2020/08/06 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
2020/11/09 Javascript
[00:43]FTP典藏礼包 DOTA2三大英雄霸气新套装
2014/03/21 DOTA
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
Python Web编程之WSGI协议简介
2018/07/18 Python
Django Rest framework之认证的实现代码
2018/12/17 Python
python实现字符串加密成纯数字
2019/03/19 Python
详解Python中list[::-1]的几种用法
2020/11/16 Python
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
英国鞋网:Rubber Sole
2020/03/03 全球购物
千元咖啡店的创业计划书范文
2013/12/29 职场文书
总经理司机岗位职责
2015/04/10 职场文书
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python