進歩しようとしています。このwhileループは、ソケットから行を受け取ったときにハングするようです。ここでJava、whileループのBufferedReaderに関する問題
は、コードのサーバー側です:
out = new PrintWriter(socketcliente.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socketcliente.getInputStream()));
//receive and shows client data
linea = 0;
while ((buffer[linea] = in.readLine()) != null) {
System.out.println(buffer[linea]);
linea = linea+1;
}
//asks for a command and sends it to client
System.out.println("Enter remote command");
while ((input = scanner.nextLine()) != null) {
out.println(input);
}
、ここでは、クライアント側です:
out = new PrintWriter(socketcliente.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socketcliente.getInputStream()));
//sends a limited amount of lines to the server
linea = 0;
while (buffer[linea] != null) {
out.println(buffer[linea]);
linea = linea+1;
}
//receive the command from server, executes and save output for sending to the server
while ((comandor = in.readLine()) != null) {
proceso = Runtime.getRuntime().exec(comandor);
pinput = new BufferedReader(new InputStreamReader(proceso.getInputStream()));
buffer = new String[100];
linea = 0;
while ((psalida = pinput.readLine()) != null) {
buffer[linea] = psalida;
linea = linea+1;
}
}
サーバーが受信したデータを印刷した後、それは何もしない、またwhileループを抜けます。データをクライアントに送り返す必要があります。私はPrintWriterとBufferedReaderを使用しています。
編集:私が試していることを理解するための完全なコード。コマンドの実行と出力の保存は正常に実行され、問題はサーバー内のデータを受信し、すべてのデータを取得しますが、最後に停止し、最初のwhileループを終了しません。ループを終了させるにはどうすればよいですか?私はメッセージの後に、クライアントからのNULLバイトを送信しようとしたか、のようなサーバーが理解できる「テキスト終了」:私は失われたんだと行う方法を見つけることができませんでした
while ((buffer[linea] = in.readLine()) != null && (buffer[linea] = in.readLine()) != "quit")
を。
これらはすべてtry文です。 何も機能しません。私は初心者です、助けてくれてありがとう。あなたのserver side
コードで
読者は文句を言わない場合はnullを返します。 – matt
あなたのコードは一般的に非常にエラーを起こしやすいようです。私たちはあなたが達成しようとしていることを知らない。そのようなバッファ=新しい文字列[100]; 100行に制限されていない限り、オーバーフローを引き起こす可能性があります。 – vladaman