node.js: отправка и получение байтов в сокет TCP - PullRequest
0 голосов
/ 12 апреля 2020

Это должно быть легко понять, но я так расстроен, и я не могу найти документацию для этого довольно простого случая.

Я хочу отправлять байты (не строки) по TCP подключение и обработка ответа. Вот что у меня есть, но оно выдает исключение типа при использовании типа Buffer. Когда я вместо этого использую строковый тип, он отправляет байты 0xc3 0xbe 0x74 0x01 вместо 0xfe 0x74 0x01 (из tcpdump). Бог знает почему.

Если я должен вместо этого использовать интерфейс канала, тогда отлично, но я не могу найти, как это сделать для потоков TCP, а не для файлов.

const net = require ('net')

const pumpIP = '192.168.1.208'
const pumpPort = 2101
const pumpStr = '\xfe\x74\x01'
const pumpBuffer = Buffer.from(0xfe, 0x74, 0x01)


var pump = new net.Socket()

pump.connect(pumpPort, pumpIP, function() {
    pump.write(pumpBuffer)    // <-- this throws a type error
//  pump.write(pumpStr)       // <-- this sends 0xc3 0xbe 0x74 0x01 instead
})

pump.on('data', function(data) {
//  code to handle data
    pump.destroy()
})

1 Ответ

1 голос
/ 12 апреля 2020

Для вашего Buffer.from() вам нужно использовать массив. Попробуйте это:

const pumpBuffer = Buffer.from([0xFE, 0x74, 0x01]);

https://nodejs.org/api/buffer.html#buffer_class_method_buffer_from_array

...