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

本文实例讲述了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!");
});

效果

事件监听

常用监听事件事件类型 事件触发条件
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程序设计有所帮助。

(0)

相关推荐

  • NodeJs的fs读写删除移动监听

    NodeJs版本:4.4.4 fs 文件系统模块是一个封装了标准的 POSIX 文件 I/O 操作的集合.Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本. 图片的复制与粘贴 创建一个可读流与一个写入流.通过管道pipe. var fileReadStream = fs.createReadStream(sourcePath); var fileWriteStream = fs.createWriteStream(targetPath); fileReadStream.pip

  • 从零开始学习Node.js系列教程五:服务器监听方法示例

    本文实例讲述了Node.js服务器监听方法.分享给大家供大家参考,具体如下: httpsnifferInvoke.js var http = require('http'); var sniffer = require('./httpsniffer'); var server = http.createServer(function(req, res){ res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello, Wor

  • node.js监听文件变化的实现方法

    前言 随着前端技术的飞速发展,前端开发也从原始的刀耕火种,向着工程化效率化的方向发展.在各种开发框架之外,打包编译等技术也是层出不穷,开发体验也是越来越好.例如HMR,让我们的更新可以即时可见,告别了手动F5的情况.其实现就是监听文件变化自动调用构建过程.下面就关注下如何实现node监听文件变化. 场景 假定要监听index.js,每当内容更改重新编译. 我们就用简单的console来标识执行编译.下面就是实现该功能. node原生API fs.watchFile 翻下node的文档就会看到一个

  • NodeJS Web应用监听sock文件实例

    像 NodeJS 写的 TCP 服务可以监听在某个 sock 文件(Domain Socket) 上,它的 HTTP 服务也能这么干.虽然作为 HTTP 服务连接某个 sock 文件的意义不大,所以这里只算是一个纯粹的尝试. TCP 服务是这样写 复制代码 代码如下: var net = require('net'); net.createServer(function (socket) {   socket.on('data', function (data) {     socket.wri

  • nodejs事件的监听与触发的理解分析

    本文实例分析了nodejs事件的监听与触发.分享给大家供大家参考.具体分析如下: 关于nodejs的事件驱动,看了<nodejs深入浅出>还是没看明白(可能写的有点深,或者自己理解能力不够好),今日在图灵社区看到一篇关于nodejs事件的监听与触发,由于给出的例子比较多人,很容易理解,所以也大致明白了nodejs事件驱动. 以下内容参考了图灵社区的文章(地址:http://www.ituring.com.cn/article/177478) 首先来了解一下nodejs的Event模块: Nod

  • Node.js EventEmmitter事件监听器用法实例分析

    本文实例讲述了Node.js EventEmmitter事件监听器用法.分享给大家供大家参考,具体如下: Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列. events 模块只提供了一个对象: events.EventEmitter.EventEmitter 的核心就是事件触发与事件监听器功能的封装. 该模块已被node.js默认引,不需要使用require()显示引入. EventEmitter 对象如果在实例化时发生错误,会触发 'error' 事件.当添加新的监

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

    本文实例讲述了Node.js net模块功能及事件监听用法.分享给大家供大家参考,具体如下: net模块 对比C语言的网络编程,Node.js有更加简便的开发模式与模块提供.它就是net模块 在需要使用的时候只需要require("net")就可以引入模块了. var net = require("net"); 服务端编程 引入模块的前提下: 1. 创建一个新的TCP或IPC服务 var server = net.createServer(function(clie

  • Node.js Buffer模块功能及常用方法实例分析

    本文实例讲述了Node.js Buffer模块功能及常用方法.分享给大家供大家参考,具体如下: Buffer模块 alloc()方法 alloc(size,fill,encoding)可以分配一个大小为 size 字节的新建的 Buffer,size默认为0 var buf = Buffer.alloc(10); 参数fill为填充的数据,只要指定了fill就会调用Buffer.fill(fill) 初始化这个Buffer对象 var buf = Buffer.alloc(10,0xff);//

  • js实现滑动触屏事件监听的方法

    本文实例讲述了js实现滑动触屏事件监听的方法.分享给大家供大家参考.具体实现方法如下: function span_move_fun(){ var span = document.getElementById("move_k"); var span_left = $(span).offset().left; var span_top = $(span).offset().top; var start_left = $(span).offset().left; var start_top

  • JavaScript使用addEventListener添加事件监听用法实例

    本文实例讲述了JavaScript使用addEventListener添加事件监听用法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html> <html lang="en"> <head> <title>This text is the title of the document</title> <script> function showalert(){ alert('you clicked

  • js 冒泡事件与事件监听使用分析

    冒泡事件 js中"冒泡事件(bubble)"并不是能实际使用的花哨技巧,它是一种对js事件执行顺序的机制,"冒泡算法"在编程里是一个经典问题,冒泡算法里面的"冒泡"应该说是交换更加准确:js里面的"冒泡事件"才是真正意义上的"冒泡",它从DOM最低层逐层遍历树,然后附加相应事件.以下面代码为例: 冒泡事件 function Add(sText) { document.getElementById("

  • AngularJS中watch监听用法分析

    本文实例讲述了AngularJS中watch监听用法.分享给大家供大家参考,具体如下: ANGULAR 监听使用: 当angular数据模型发生变化时,我们需要如果需要根据他的变化触发其他的事件. $watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你. $watch(watchExpression, listener, objectEquality); watchExpression 需要监控的表达式 listener 处理函数,函数参数如下  function

  • Android编程之DatePicker和TimePicke简单时间监听用法分析

    本文实例讲述了Android编程之DatePicker和TimePicke简单时间监听用法.分享给大家供大家参考,具体如下: DatePicker和TimePicker都是从FrameLayout派生而来. 简单的例子实现对时间监听. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/

  • Android开发之button事件监听简单实例

    本文实例讲述了Android开发之button事件监听用法.分享给大家供大家参考.具体如下: 事件监听的listener,有以下几种方式: 1.声明一个普通的class,实现OnClickListener接口,然后在button的setOnClickListener中new该类的一个对象. 2.使用匿名内部类,直接 btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { S

  • node.js核心模块有哪些

    全局对象 在浏览器JS中,通常window是全局对象,而nodejs中的全局对象是global,所有全局变量都是global对象的属性. 在nodejs中能够直接访问到的对象通常都是global的属性,如console. process等 全局对象与全局变量 global最根本的作用是作为全局变量的宿主. 全局变量的条件: 在最外层定义的变量:全局对象的属性:隐式定义的变量(未定义直接赋值的变量) 定义一个全局变量,同时也是全局对象的属性. 永远使用var定义变量以避免引入全局变量,因为全局变量

随机推荐