2014-12-17 2 views
6
var server = net.createServer(function(c) { 
    //... 
    c.on('data', function(data) { 
    //The data is all data, but what if I need only first N and do not need other data, yet. 
    c.write(data); 
    }); 
    //... 
}; 

Есть ли способ читать только определенную часть данных? Например:Только чтение N байтов из сокета в node.js

c.on('data', N, function(data) { 
    //Read first N bytes 
}); 

Где N число ожидаемых байтов. Таким образом, обратный вызов получает только N из M байтов.

Решение (благодаря MSCDEX):

c.on('readable', function() { 
    var chunk, 
     N = 4; 
    while (null !== (chunk = c.read(N))) { 
    console.log('got %d bytes of data', chunk.length); 
    } 
}); 
+0

Кто downvoted? Прокомментируйте, пожалуйста! – Max

ответ

3

Читаемые потоков в узле V0.10 + имеют read(), что позволяет запрашивать количество байт.

0

Вы можете создать буфер, в котором ваши данные будут сохранять только сумму, которую хранит ваш буфер.

var buf = Buffer(someNum) 

Вот документация для деталей http://nodejs.org/api/buffer.html#buffer_new_buffer_size

+0

Я получаю «данные» в качестве параметра от обратного вызова. Как может помочь создание другого буфера? – Max

Смежные вопросы