オフィスで使用するいくつかのTCP/IPモジュールへのTCP接続を実行するNode.jsアプリケーションを作成しようとしています。これらのモジュールは古いコンソールにインストールされているため、それらを管理するソフトウェアは非常に古く、もはやサポートされていません。私たちが今それらを操作する方法は、Windowsでコマンドプロンプトを使用して、そのように接続することです。ここに私たちが現在それをやっているところがあります。Node.js TCP接続
>telnet <XX.XX.XX.XX> <PORT>
接続に成功したならば、我々はその後、数200に続いて、Ctrlキーと同時にAキーを保持している
<Ctrl+A> 200
を入力する空白の画面を取得しますモジュールの簡単な詳細を表示します。これは私たちが望むものです。この方法は私たちのために働きますが、それぞれ異なるIPを持つ20以上のモジュールがある場合は、実際的ではないという問題があります。彼らが働いていることを確認するために毎週彼らに連絡しなければなりません。そして、20人が本当に多くの時間を費やすので、プロセスを最適化したいと思います。私たちは、接続
var net = require('net');
var HOST_ARR = ['XX.XX.XX.XX'];
var PORT = 10001;
var client = new net.Socket();
var spawn = require('child_process').spawn('cmd');
var exec = require('child_process').exec;
var readline = require('readline');
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
function connect(host, port){
return new Promise(function(resolve, reject){
client.connect(port, host, function() {
// Write a message to the socket as soon as the client is connected
console.log('CONNECTED TO: ' + host + ':' + port);
/*** EXECUTE <Ctrl+A> 200 COMMAND BEFORE CLOSING THE CONNECTION ***/
resolve('Success');
//end connection
client.destroy();
});
//handle errors
client.on('error', function(err) {
reject(err.code);
});
});
}
我々はうまくモジュールに接続することができ、そしてプロセスは非常に高速であるの世話をNode.jsの中のミニアプリを書き始めました。一度接続が開始されると、command <Ctrl+A> 200
を実行する方法に固執しています。助言がありますか?
exec('\0x01200', function(error, stdout, stderr) { //ASCII for <Ctrl+A> is \0x01
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
を試みたが、うまくいきませんでした。事前に感謝
感謝を。これは部分的に問題を解決しますが、私は全部ではなく1行の応答しか得ません。入ってくるデータ全体を読む方法はありますか? – lomas09
'client.destroy()'は、受信データ全体が受信される前に接続をシャットダウンすることがあります。あなたのコードで 'client.destroy()'が 'client.end()'に置き換えられたらどうなりますか? – wikrsh