我有一个由客户端和服务器组成的 Java 应用程序。客户端向服务器发送加密命令,服务器执行它们。
我现在遇到的问题是,使用我的加密算法,有时加密的命令包含“\n”或“\r”字符,这会弄乱我的服务器代码。这是因为我使用的是 readLine() 方法,它在找到行终止符时停止。我需要的是一种将客户端发送的所有字符读入一个字符串的方法。
这是我的代码:
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() 函数的各种形式的嵌套循环)都没有奏效。我欢迎任何帮助或建议。感谢大家!