Node.js v6.9.4
Net模块提供1个异步网络包装器,它能够创建被称为流的TCP服务器和客户端。
* 创建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段时间后触发该事件,其实不关闭套接字,只是通知套接字
* const net = require(‘net’) *
* net.Socket是本地套接字或TCP的1个抽象,实现双工Stream接口,可以由用户创建并作用于客户端,或由node创建,并通过服务器的’连接’事件传递给用户 *
net模块方法
上一篇 c++的应用领域是哪些?
下一篇 搭建web工作流实现自动化