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!rn');
});
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!rn’,
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[,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