这让我非常困惑。我在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
这是类似的,但不完全是它应该发送的内容。我错过了什么?
答案 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
告诉我你是否有不同的东西。