1

这让我很困惑。我在 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

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

4

1 回答 1

2

这很简单,只需将 aBuffer直接传递给您的套接字:

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 数据
0000000 78 78 0e 00 c4 25 巴 53 26 98 30 30 30 00 00 6c
0000010 2d 0d 0a                                       
0000013

如果你得到不同的东西,请告诉我。

于 2013-02-05T09:13:21.940 回答