3

クライアントの入力を読み取り、それに応じて動作するNodeJS TCPサーバーを作成しようとしています。

データを読み取る方法を知りたいので、処理を実行する条件を設定できます。

var net = require('net');
var server = net.createServer(function (socket) {

socket.on('data', function(data) {
    buf = new Buffer(256);
    len = buf.write(data.toString());

    if (buf.toString('utf8', 0, len) === "test"){
        console.log("you typed test");
    }

    console.log(len + " bytes: " + buf.toString('utf8', 0, len));
});
socket.write("Connected to server.\r\n");
});
server.listen(8080, "127.0.0.1");

ここで入力した値を出力しています console.log(len + " bytes: " + buf.toString('utf8', 0, len)); が、このログの上の if ステートメントは、実際にクライアント ターミナル ウィンドウに「test」と入力すると、値「test」と一致しません。

どんな助けでも大歓迎です

-クリス

4

1 に答える 1

6

私は次のtoString()方法を使用してそれを解決しました:

socket.on('data', function(data) {
  var response = data.toString().trim();

  if (/disconnect/.test(response)) {
    console.log("Client is diconnecting.");
    socket.end('Disconnecting you now.\r\n');
  } 
});

socket.on('end', function() {
  console.log('client disconnected');
});
于 2012-07-20T13:41:48.423 に答える