const net = require('net');
// 创建TCP服务器
const server = net.createServer((socket) => {
console.log('Client connected');
// 初始化缓存用于暂存接收到的数据
let buffer = Buffer.alloc(0);
socket.on('data', (chunk) => {
// 每次接收到数据,将其追加到缓存中
buffer = Buffer.concat([buffer, chunk]);
// 假设我们约定每条消息是4字节长度
while (buffer.length >= 4) {
// 提取第一条消息
const messageLength = buffer.readInt32BE(0);
if (buffer.length < messageLength + 4) {
// 如果剩余数据不足以构成一条完整消息,则停止本次循环,等待更多数据
break;
}
// 解析出并处理第一条完整消息
const message = buffer.slice(4, 4 + messageLength);
console.log('Received message:', message.toString());
// 移除已处理消息部分,剩余部分继续等待下次处理
buffer = buffer.slice(4 + messageLength);
}
});
socket.on('end', () => {
console.log('Client disconnected');
});
});
server.listen(3000, () => {
console.log('Server is listening on port 3000');
});