Node核心模块之Net

Node核心模块之Net

Node.js v6.9.4

Net模块提供一个异步网络包装器,它能够创建被称为流的TCP服务器和客户端。

一个实例

* 创建TCP服务器 *

const net = require('net');


let server = net.createServer((socket) => {
    socket.on('data', (data) => {
        console.log(data);
    });

    socket.write('这是一条TCP服务器发送的数据');

    socket.end(() => {
        console.log('链接断开');
    });


});

// grab a random port.
server.listen(3306, () => {

  // "opened server on { address: '::', family: 'IPv6', port: 3306 }"
  console.log('opened server on', server.address());    
});

* 创建TCP客户端 *

const net = require('net');

const client = net.createConnection({port: 3306}, () => {
  //'connect' listener
  console.log('connected to server!');
  client.write('world!\r\n');
});

client.on('data', (data) => {
  console.log(data.toString());
  client.end();
});

client.on('end', () => {
  console.log('disconnected from server');
});

* 先运行上面的服务器程序,然后运行客户端程序,执行流程如下 *

1.服务器启动,打印’opened server on { address: ‘::’, family: ‘IPv6’, port: 3306 }’
2.客户端连接成功,打印’connected to server!’
3.客户端发送数据’world!\r\n’,
4.服务器接受数据’connected to server!’,服务器发送数据’这是一条TCP服务器发送的数据’
5.客户端打印接受数据
6.客户端断开

服务端事件

* 由于net.Server是一个EventEmitter实例,因此TCP服务器会有自定义注册事件,自定义事件有如下四种: *

1.listening: 在调用server.listen()方法后触发
2.connection: 当有新客户连接时触发
3.close: 当服务器关闭时触发,调用server.close()后,服务器停止接受新的套接字连接,等待当前所有连接都断开后,触发该事件
4.error: 当服务器发生异常时,触发该事件,’close’事件将会在此事件后直接调用

连接事件

* 服务器可以同时与多个客户端保持连连接,对于每个连接而言是典型的可写可对Stream对象,称为socket(socket是net.Socket的一个实例,net.Socket实例是EventEmitter),Stream对象可以用于服务器和客户端之间的通信,是一个双工Stream接口,可以通过data事件读取另一端发送来的数据,可以通过write()方法向另一端发送数据,连接事件有如下几种自定义事件*

1.data: 一端调用write()发送数据时,另一端触发data()事件,参数数据是Buffer或String, 数据的编码由socket.setEncoding()设置。
2.close: 当套接字关闭后触发该事件
3.connect: 套接字建立成功后触发
4.error: 当异常发生时触发该事件
5.end: 当套接字的另一端发送FIN数据包时触发
6.drain: 当写缓冲区为空时触发改事件
7.timeout: 当套接字连接一段时间后触发该事件,并不关闭套接字,只是通知套接字

net模块方法

* const net = require(‘net’) *
* net.Socket是本地套接字或TCP的一个抽象,实现双工Stream接口,可以由用户创建并作用于客户端,或者由node创建,并通过服务器的’连接’事件传递给用户 *

net模块方法

  • net.connect(options[, connectListener]):返回一个net.Socket,按照options自动连接服务器
  • net.connect(path[, connectListener]):返回一个新的unix net.Socket并自动连接到提供的路径
  • net.connect(port[, host][, connectListener])
  • net.createConnection(options[, connectListener]):返回一个net.Socket,按照options自动连接服务器
  • net.createConnection(path[, connectListener])
  • net.createConnection(port[, host][, connectListener])
  • net.createServer([options][, connectionListener]):创建一个新的TCP服务器
  • net.isIP(input):判断输入IP,无效IP(返回0),IPv4(返回4),IPv6(返回6)
  • net.isIPv4(input):如果输入是IPv4,返回true
  • net.isIPv6(input):如果输入是IPv6,返回true
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值