node.js缓冲区二进制输出不同

时间:2013-02-05 08:10:07

标签: node.js sockets binary

这让我非常困惑。我在node.js中有以下套接字服务器(简化):

net.createServer(function (socket) {
    socket.on('data', function (data) {
        var replyData = new Buffer('78780E00C425BA53269830303000006C2D0D0A',
            'hex').toString('binary');
        socket.end(replyData);
    });
}).listen(config.port);

我期望它回复任何客户端是缓冲区中十六进制指定的二进制文件,但它实际上回复:78780E00C38425C2BA5326C298303030006C2D0D0A

这是类似的,但不完全是它应该发送的内容。我错过了什么?

1 个答案:

答案 0 :(得分:2)

这非常简单,只需将Buffer直接传递给您的套接字:

var net = require('net');

net.createServer(function (socket) {
  socket.on('data', function (data) {
    socket.end(new Buffer('78780E00C425BA53269830303000006C2D0D0A', 'hex'));
 });
}).listen(config.port);

编辑:只是重新阅读您的问题,并发现您的问题并未将数据视为二进制文件。尽管如此,我的代码对我有用:

laurent ~/dev/test $ wget http://localhost:3001 --output-document=data
laurent ~/dev/test $ hexdump data
0000000 78 78 0e 00 c4 25 ba 53 26 98 30 30 30 00 00 6c
0000010 2d 0d 0a                                       
0000013

告诉我你是否有不同的东西。