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 相关文章推荐
IE 上下滚动展示模仿Marquee机制
Dec 20 Javascript
javascript 判断中文字符长度的函数代码
Aug 27 Javascript
js鼠标滑过弹出层的定位IE6bug解决办法
Dec 26 Javascript
js菜单点击显示或隐藏效果的简单实例
Jan 13 Javascript
jquery禁用右键示例
Apr 28 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
Aug 22 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
Mar 18 Javascript
javascript实现textarea中tab键的缩排处理方法
Jun 26 Javascript
js常用DOM方法详解
Feb 04 Javascript
详解React 在服务端渲染的实现
Nov 16 Javascript
vue实现打印功能的两种方法
Sep 07 Javascript
一看就会的vuex实现登录验证(附案例)
Jan 09 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
php 获取全局变量的代码
2011/04/21 PHP
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
PHP微框架Dispatch简介
2014/06/12 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
2020/12/10 PHP
js判断变量是否空值的代码
2008/10/26 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
奉献给JavaScript初学者的编写开发的七个细节
2011/01/11 Javascript
jquery判断元素的子元素是否存在的示例代码
2014/02/04 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
js、jquery图片动画、动态切换示例代码
2014/06/03 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
2016/08/29 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
2016/10/10 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
Angular实现的table表格排序功能完整示例
2017/12/22 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
开发中常用的25个JavaScript单行代码(小结)
2019/06/28 Javascript
express框架下使用session的方法
2019/07/31 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
Python利用多进程将大量数据放入有限内存的教程
2015/04/01 Python
Python下调用Linux的Shell命令的方法
2018/06/12 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
python列表插入append(), extend(), insert()用法详解
2019/09/14 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
keras实现图像预处理并生成一个generator的案例
2020/06/17 Python
电子商务专业个人的自我评价
2013/11/19 职场文书
受欢迎的大学生自我评价
2013/12/05 职场文书
农村婚礼证婚词
2014/01/10 职场文书
股权投资意向书
2014/04/01 职场文书
销售岗位职责范本
2014/06/12 职场文书
卖房授权委托书样本
2014/10/05 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
汉字听写大会观后感
2015/06/12 职场文书
MySQL 查询速度慢的原因
2021/05/25 MySQL