- 引入模块:
在 Node.js 中,使用
net
模块来创建 TCP 服务器和客户端。首先引入 net
模块:
const net = require('net');
- 创建服务器:
使用
net.createServer()
方法创建一个 TCP 服务器实例。在回调函数中处理客户端连接。
const server = net.createServer((clientSocket) => {
// 处理客户端连接逻辑
});
- 监听端口:
调用服务器实例的
listen()
方法,使其监听指定的端口和地址。
server.listen({ port: 8080, host: '127.0.0.1' }, () => {
console.log(`Server listening on port 8080`);
});
- 建立目标连接:
在客户端连接回调函数中,创建一个到目标服务器的新 TCP 连接。
const targetSocket = net.connect({ port: 9090, host: '127.0.0.1' }, () => {
// 连接到目标服务器成功,开始转发数据
});
- 数据转发:
将客户端发送的数据转发到目标服务器,以及将目标服务器返回的数据转发回客户端。
clientSocket.pipe(targetSocket);
targetSocket.pipe(clientSocket);
- 错误处理:
对客户端和目标服务器连接的错误进行处理。
clientSocket.on('error', (err) => {
console.error('Client socket error:', err);
targetSocket.end();
});
targetSocket.on('error', (err) => {
console.error('Target socket error:', err);
clientSocket.end();
});
- 关闭连接:
当一端连接结束时,相应地关闭另一端的连接。
clientSocket.on('end', () => {
targetSocket.end();
});
targetSocket.on('end', () => {
clientSocket.end();
});