Node.js net模块功能及事件监听用法分析


Posted in Javascript onJanuary 05, 2019

本文实例讲述了Node.js net模块功能及事件监听用法。分享给大家供大家参考,具体如下:

net模块

对比C语言的网络编程,Node.js有更加简便的开发模式与模块提供。它就是net模块
在需要使用的时候只需要require("net")就可以引入模块了。

var net = require("net");

服务端编程

引入模块的前提下:

1. 创建一个新的TCP或IPC服务

var server = net.createServer(function(client_socket) {
  console.log("client coming");
});

2. 创建connections 启动一个 server 监听.

server.listen({
  host:'127.0.0.1',
  port:6080,
  exclusive:true,
});

客户端编程

引入net模块。

1. 创建一个连接即可

//端口要与需要连接的服务器端口一致
var socket = net.connect({
  port:6080,
  host:'127.0.0.1',
},
function(){
  console.log("connected to server!");
});

效果

Node.js net模块功能及事件监听用法分析

事件监听

常用监听事件事件类型 事件触发条件
connection 连接成功调用的事件
error 发生错误调用的事件
close 当server关闭的时候触发. 注意,如果有连接存在, 直到所有的连接结束才会触发这个事件
data 当接收到数据的时触发该事件。data 参数是一个 Buffer 或 String。数据编码由 socket.setEncoding() 设置。注意当 Socket 发送 data 事件的时候,如果没有监听者数据将会丢失。
listening 当服务被绑定后调用 server.listen().
end 当 socket 的另一端发送一个 FIN 包的时候触发,从而结束 socket 的可读端。

监听事件的API都是使用on()方法。

Demo演示

下面有一个详细的demo可自行尝试

tcpserver.js

//tcpserver.js
var net = require('net');
var server = net.createServer(function(client_socket) {
  console.log("client coming");
  client_socket.setEncoding("utf8");
  //接收到客户端发送的错误就会调用
  client_socket.on("error",function(err){
    console.log("error");
  });
  //有接收到客户端的数据调用的函数
  //data 默认是Hex(二进制编码)格式,如果强制设置为utf8那么底层会先转换为utf8字符串传过去
  client_socket.on("data",function(data){
    console.log(data);
  });
  //用户断线离开
  client_socket.on("close",function(client_socket){
  console.log("close socket");
  });
});
//编写代码指示server监听到某个端口上
//配置好之后就会监听server 等待客户端接入
//host==> 地址 port ==>端口 exclusive ==> 独占模式
server.listen({
  host:'127.0.0.1',
  port:6080,
  exclusive:true,
});
server.on("connection",function(client_socket){
  console.log("connection");
});
//server.unref();//停止node对server的监听事件
server.on("error",function (error) {
  console.log("error is on server",error);
});
//服务器关闭事件
server.on("close",function(client_socket){
  console.log("close server");
});

tcpclient.js

//tcpclient.js
var net = require("net");
//net.socket类
var socket = net.connect({
  port:6080,
  host:'127.0.0.1',
},
function(){
  console.log("connected to server!");
});
//连接成功调用的事件
socket.on("connect",function(){
  console.log("connect success");
  //已utf-8的方式编码成二进制的数据传输
  socket.write("Hello World!","utf8");
});
//发生错误调用的事件
socket.on("error",function (err) {
  console.log("error is ",err);
});
//socket 关闭事件
socket.on("close",function(){
  console.log("close");
});
//对方发送关闭数据包的事件
socket.on("end",function(){
  console.log("end event");
})
//当有数据发送过来的时候调用
socket.on("data",function(data){
  console.log(data);
});

希望本文所述对大家nodejs程序设计有所帮助。

Javascript 相关文章推荐
javascript动画之圆形运动,环绕鼠标运动作小球
Jul 20 Javascript
JavaScript 高级篇之闭包、模拟类,继承(五)
Apr 07 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
Aug 05 Javascript
php基于redis处理session的方法
Mar 14 Javascript
js基于setTimeout与setInterval实现多线程
Jun 17 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
Sep 01 Javascript
JS中的作用域链
Mar 01 Javascript
Vuex和前端缓存的整合策略详解
May 09 Javascript
Vue-Router实现组件间跳转的三种方法
Nov 07 Javascript
JS实现自定义弹窗功能
Aug 08 Javascript
js实现可爱的气泡特效
Sep 05 Javascript
vue+node 实现视频在线播放的实例代码
Oct 19 Javascript
JS无限级导航菜单实现方法
Jan 05 #Javascript
JSON字符串操作移除空串更改key/value的介绍
Jan 05 #Javascript
JavaScript常见事件对象与操作实例总结
Jan 05 #Javascript
JavaScript常见事件处理程序实例总结
Jan 05 #Javascript
JavaScript代码调试方法实例小结
Jan 05 #Javascript
JavaScript实现连连看连线算法
Jan 05 #Javascript
JavaScript错误处理操作实例详解
Jan 04 #Javascript
You might like
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
PHP个人网站架设连环讲(一)
2006/10/09 PHP
php网上商城购物车设计代码分享
2012/02/15 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
phpnow php探针环境检测代码
2014/11/04 PHP
php字符串操作常见问题小结
2016/10/11 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
Yii框架实现多数据库配置和操作的方法
2017/05/25 PHP
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
2014/06/20 Javascript
JS实现让访问者自助选择网页文字颜色的方法
2015/02/24 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
深入理解vue-loader如何使用
2017/06/06 Javascript
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
Python urlopen()函数 示例分享
2014/06/12 Python
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
《Python学习手册》学习总结
2018/01/17 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
Python any()函数的使用方法
2019/10/28 Python
浅谈Python中range与Numpy中arange的比较
2020/03/11 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
2019年c语言经典面试题目
2016/08/17 面试题
女大学生毕业找工作的自我评价
2013/10/03 职场文书
电子商务专业自荐信
2014/06/02 职场文书
出差报告范文
2014/11/06 职场文书
高考升学宴答谢词
2015/01/20 职场文书
2015年外贸业务员工作总结范文
2015/05/23 职场文书
被告代理词范文
2015/05/25 职场文书
2015双创工作总结
2015/07/24 职场文书
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫
MySQL查询日期时间
2022/05/15 MySQL