2014-12-17 16 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); 
    }); 
    //... 
}; 

Esiste un modo per leggere solo una parte definita dei dati? Ad esempio:Leggere solo i primi N byte dal socket in node.js

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

Dove N è il numero di byte che mi aspetto. Quindi il callback ottiene solo N byte fuori M.

La soluzione è (grazie a 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

Chi downvoted? Per favore, commenta! – Max

risposta

3

flussi leggibile nodo v0.10 + hanno un read() che consente di richiedere un numero di byte.

0

È possibile creare un buffer in cui i dati verranno salvati solo l'importo che il buffer contiene.

var buf = Buffer(someNum) 

Ecco la documentazione per i dettagli http://nodejs.org/api/buffer.html#buffer_new_buffer_size

+0

Ricevo il buffer "dati" come parametro dalla richiamata. In che modo la creazione di un altro Buffer può aiutare? – Max

Problemi correlati