私はクライアントとサーバーで構成されるJavaアプリケーションを持っています。クライアントは暗号化されたコマンドをサーバーに送信し、サーバーはそれを実行します。Java:ソケットから複数行を取得する
私の現在の暗号化アルゴリズムでは、暗号化されたコマンドに「\ n」または「\ r」文字が含まれていることがあります。これは、私が行終端文字を見つけると停止するreadLine()メソッドを使用しているためです。私が必要とするのは、クライアントが1つの文字列に送るすべての文字を読み取る方法です。ここで
は私のコードです:私は(読み取り()関数を使用して、ネストされたループの様々な形を)試した
public void run(){
System.out.println("Accepted Client!");
try{
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream(), "ISO8859_1"));
out = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream(), "ISO8859_1"));
String clientCommand = null;
while(RunThread){
// read incoming stream
do{
clientCommand = in.readLine();
}while(clientCommand == null);
//decrypt the data
System.out.println("Client: " + clientCommand);
if(clientCommand.equalsIgnoreCase("quit")){
RunThread = false;
}else{
//do something
out.flush();
}
}
}catch(Exception e){
e.printStackTrace();
}
}
すべてが働いていません。私は何か助けや提案を歓迎する。みんな、ありがとう!
単純にテキスト、Reader/Writer、Input/OutputStream、およびバイナリデータ(バイト)を読み込まないでください。上記のコードでは、エンコーディングが混乱を招く可能性があります。 –