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编写trim()函数及正则表达式的运用
Oct 24 Javascript
实现51Map地图接口(示例代码)
Nov 22 Javascript
jQuery实现自动调整字体大小的方法
Jun 15 Javascript
基于replaceChild制作简单的吞噬特效
Sep 21 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
Feb 19 Javascript
在javascript中使用com组件的简单实现方法
Aug 17 Javascript
seajs学习之模块的依赖加载及模块API的导出
Oct 20 Javascript
Bootstrap fileinput文件上传预览插件使用详解
May 16 Javascript
本地存储localStorage用法详解
Jul 31 Javascript
javascript使用正则实现去掉字符串前面的所有0
Jul 23 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
Oct 25 Javascript
JavaScript代码实现微博批量取消关注功能
Feb 05 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
星际争霸任务指南——人族
2020/03/04 星际争霸
BBS(php &amp; mysql)完整版(四)
2006/10/09 PHP
yii框架通过控制台命令创建定时任务示例
2014/04/30 PHP
100多行PHP代码实现socks5代理服务器[2]
2016/05/05 PHP
php array 转json及java 转换 json数据格式操作示例
2019/11/13 PHP
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
Javascript实现图片不间断滚动的代码
2016/06/22 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
2016/08/01 Javascript
JS作用域深度解析
2016/12/29 Javascript
JS编写函数实现对身份证号码最后一位的验证功能
2016/12/29 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
JS+Ajax实现百度智能搜索框
2017/08/04 Javascript
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
微信小程序开发实现的IP地址查询功能示例
2019/03/28 Javascript
vue表单数据交互提交演示教程
2019/11/13 Javascript
vue-cli4使用全局less文件中的变量配置操作
2020/10/21 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
PyTorch线性回归和逻辑回归实战示例
2018/05/22 Python
一文了解Python并发编程的工程实现方法
2019/05/31 Python
Django实现基于类的分页功能
2019/10/31 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
PIP和conda 更换国内安装源的方法步骤
2020/09/21 Python
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
C语言变量的命名规则都有哪些
2013/12/27 面试题
2014年前台个人工作总结
2014/11/14 职场文书
解除劳动关系协议书2篇
2014/11/28 职场文书
大班上学期个人总结
2015/02/13 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
2015年留守儿童工作总结
2015/05/22 职场文书
纪检监察立案决定书
2015/06/24 职场文书
《月光曲》教学反思
2016/02/16 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript