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);

クライアントに返信することを期待しているのは、バッファー内の 16 進数で指定されたバイナリですが、実際には次のように返信します。

これは似ていますが、正確に何を送信すべきかではありません。私は何が欠けていますか?

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);

編集:質問を読み直して、問題がデータをバイナリとして取得していないことに気づきました。それにもかかわらず、私のコードは私のために機能します:

ローレント ~/dev/test $ wget http://localhost:3001 --output-document=data
ローレント ~/dev/test $ hexdump データ
0000000 78 78 0e 00 c4 25 ba 53 26 98 30 30 30 00 00 6c
0000010 2日 0日 0a                                       
0000013

何か違ったことがあれば教えてください。

于 2013-02-05T09:13:21.940 に答える