Node.js 的 net
模块提供了创建 TCP 服务器和客户端的功能,这对于开发网络应用非常有用。下面我将详细介绍 net
模块的一些基本用法,包括如何创建 TCP 服务器和客户端。
引入 net
模块
const net = require('net');
创建 TCP 服务器
下面是一个简单的 TCP 服务器示例,它监听一个端口并处理传入的连接。
const net = require('net');
const server = net.createServer((socket) => {
console.log('New connection');
socket.on('data', (data) => {
console.log(`Received data: ${data.toString()}`);
socket.write('Data received');
});
socket.on('end', () => {
console.log('Connection closed');
socket.destroy(); // 释放资源
});
});
server.listen(3000, () => {
console.log('Server listening on port 3000');
});
创建 TCP 客户端
接下来是一个简单的 TCP 客户端示例,它连接到上面创建的 TCP 服务器,并发送数据。
const net = require('net');
const client = new net.Socket();
client.connect(3000, '127.0.0.1', () => {
console.log('Connected to server');
client.write('Hello, server!');
});
client.on('data', (data) => {
console.log(`Received: ${data.toString()}`);
client.destroy(); // 结束连接
});
client.on('close', () => {
console.log('Connection closed');
});
服务器和客户端之间的交互
在这个示例中,服务器和客户端通过 TCP 连接进行交互。当客户端连接到服务器时,服务器会在控制台输出一条消息,并监听客户端发送的数据。每当收到数据时,服务器会将其写回客户端,并输出收到的数据。客户端则在连接成功后发送一条消息,并监听服务器的响应。
示例解释
- 创建 Server:
net.createServer()
创建一个 TCP 服务器。 - 处理 Connection:服务器监听
'connection'
事件来处理每个新的连接。 - 处理 Data:服务器监听
'data'
事件来处理客户端发送的数据。 - 处理 End:服务器监听
'end'
事件来处理客户端断开连接的情况。 - 创建 Client:
new net.Socket()
创建一个 TCP 客户端。 - 连接 Server:
client.connect()
连接到服务器。 - 发送 Data:客户端使用
write()
方法发送数据。 - 处理 Data:客户端监听
'data'
事件来处理服务器发送的数据。 - 关闭 Connection:客户端监听
'close'
事件来处理连接关闭的情况。
使用 net
模块的注意事项
- 错误处理:确保在服务器和客户端中都处理好可能出现的错误。
- 资源管理:当连接结束时,记得释放资源,例如使用
socket.destroy()
。 - 数据格式:TCP 传输的数据默认是 Buffer 类型,需要转换为字符串或其他格式。
总结
net
模块提供了创建 TCP 服务器和客户端的基本功能。通过这些示例,你可以构建自己的网络应用程序,例如简单的聊天室、远程控制工具等。如果你需要进一步的信息或者有其他问题,请随时告诉我!