クライアントとサーバーで構成される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();
}
}
私が試したすべて(read()関数を使用したさまざまな形式のネストされたループ)は機能しませんでした。ヘルプや提案を歓迎します。みんな、ありがとう!