サーバーとクライアントが相互に通信するアプリケーションを構築しています-telnet経由。(ソケット経由)。サーバープログラムは、いくつかのガスのタンクを監視しており、受け入れられたクライアントにソケットを介して温度レベルと事前保証レベルを送信します。
telnetで何かを書くときに、クライアントとサーバーが相互に通信 できるようになりましたが、送信するデータを処理するために助けが必要です。
ユーザーが有効なユーザーであるかどうかを判断するために、ログインスクリプトを作成しました。したがって、「myname」、「space」、「mypassword」のような2つの単語を書くことができ、緑色のライトが表示され、有効なユーザーが返されます。しかし、1つの単語だけを書き込んで、 Enterキーを押すと、次のようになります。スレッド内の例外... java.lang.Array.IndexOutOfBoundsExeption exitまたはlogoutを書き込むときのEXEPT!
(テストで使いやすいように、すべてのユーザーがスクリプトにハードコーディングされています(ログインスクリプトはそれ自体で正常に機能し、何か間違ったことを書くと有効なuser = falseを返します)。これが私のコードです。何をすべきか100%確信が持てない...;)
String telNetCommand = dataIn.readLine();
System.out.println(telNetCommand);
String dataInArray[] = telNetCommand.split(" ");
user.isValid(dataInArray[0], dataInArray[1]);
if (dataInArray[1] == "\n") {
//Ignore login request and continue telnet-logging?
}
クライアントアプリケーションには、次のような各コマンドのボタンがあります。
「n番目ごとにデータを送信する」または「n番目ごとにデータのバッチを送信する。コマンドがexitに等しい場合、またはログアウト->操作を中断する...。
// --------------// USER INPUT FROM CLIENT APP //--------------------------//
// --------------// CONTINUE ? //----------------------------//
if (command.equals("CONTINUE")) {
continueSession();
else { //..Kill session
}
}
// --------------// SKIP <N> //----------------------------//
if (command.equals("SKIP_N")) {
skipEveryNthData();
}
// --------------// BATCH <N> //---------------------------//
if (command.equals("BATCH_N")) {
batchEveryNthData();
}
// --------------// LOGG OUT #1 //-------------------------//
if (command.equals("logout") || command.equals("exit")) {
break;
}
今少し混乱しているかもしれませんが、すべてのデータを配列に入れて確認する必要があると思います
if
dataInArray[0] == "CONTINUE"
dataInArray[0] == "SKIP_N", or
dataInArray[0] == "BATCH_N"
(then send some data back)...
と...
if dataInArray[1] == "enter" ("\n") execute the single word commands ...??
if dataInArray[0] == "LOG_IN" or "PASSWORD" check if valid user is true..
ヘルプやヒントをありがとう!:)