我想通过TCP检索数据,但是获取到的数据变成了换行符的存在。
但是,如果您使用其他工具(例如 putty),结果看起来不错。
您认为问题出在哪里。
谢谢你
const net = require('node:net');
net.isIP('127.0.0.1'); // returns 4
const client = net.createConnection({ port: 1024 }, () => {
// 'connect' listener.
console.log('connected to server!');
client.write('world!\r\n');
});
// Set encoding for the socket
utf8=client.setEncoding('utf8');
// Handle incoming data
utf8.on('data', (data) => {
console.log('Received data utf8:', data);
var rawBuffer = Buffer.from(data);
console.log('Buffer Data as String:', rawBuffer.toString('utf-8'));
我的代码的结果:
&&
0101
RDG-061
010
20
0103
1
0
1048
233
0105240
原始 Putty 的结果(真实数据):
0101RDG-061
01020
01031
01044829
010524030
我相信这是因为不同的操作系统对于行结束有不同的约定,因此您可能会得到这个输出。您可以使用 linebuffer 并根据您的需要自定义它。
let lineBuffer = '';
client.setEncoding('utf8');
client.on('data', (data) => {
lineBuffer += data;
while (lineBuffer.includes('\r\n')) {
const [line, rest] = lineBuffer.split('\r\n', 2);
console.log('Received data:', line);
lineBuffer = rest;
}
});