如何通过tcp获取真实的原始数据

问题描述 投票:0回答:1

我想通过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

node.js tcpclient nodejs-stream raw
1个回答
0
投票

我相信这是因为不同的操作系统对于行结束有不同的约定,因此您可能会得到这个输出。您可以使用 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;
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.