程序员人生 网站导航

Node核心模块之Net

栏目:php教程时间:2017-02-08 08:17:38

Node核心模块之Net

Node.js v6.9.4

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

1个实例

* 创建TCP服务器 *

const net = require('net');


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

    socket.write('这是1条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!’,服务器发送数据’这是1条TCP服务器发送的数据’
5.客户端打印接受数据
6.客户端断开

服务端事件

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

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

连接事件

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

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

net模块方法

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

net模块方法

  • net.connect(options[, connectListener]):返回1个net.Socket,依照options自动连接服务器
  • net.connect(path[, connectListener]):返回1个新的unix net.Socket并自动连接到提供的路径
  • net.connect(port[, host][, connectListener])
  • net.createConnection(options[, connectListener]):返回1个net.Socket,依照options自动连接服务器
  • net.createConnection(path[, connectListener])
  • net.createConnection(port[, host][, connectListener])
  • net.createServer([options][, connectionListener]):创建1个新的TCP服务器
  • net.isIP(input):判断输入IP,无效IP(返回0),IPv4(返回4),IPv6(返回6)
  • net.isIPv4(input):如果输入是IPv4,返回true
  • net.isIPv6(input):如果输入是IPv6,返回true
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐