从node.js中的套接字中只读取前N个字节

时间:2014-12-17 12:13:08

标签: javascript node.js sockets buffer

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);
  });
  //...
};

有没有办法只读取已定义的数据部分?例如:

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

其中N是我期望的字节数。所以回调只得到M个字节中的N个。

解决方案是(感谢mscdex):

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

2 个答案:

答案 0 :(得分:3)

节点v0.10 +中的可读流有read(),允许您请求多个字节。

答案 1 :(得分:0)

您可以创建一个缓冲区,您的数据只会保存缓冲区所持有的数量。

var buf = Buffer(someNum)

以下是详细信息http://nodejs.org/api/buffer.html#buffer_new_buffer_size

的文档