我已经在这个问题上进行了一段时间的研究,但似乎无法解决这个问题。根据我的运行情况,我不断陷入for循环或while循环中。如果这是重复的邮件,我深表歉意,但是,我已经审查了page和this以及其他几个邮件,但仍无法解决问题。
我设置了一些测试打印以查看正在执行什么,并且它在第一次迭代中运行得非常好,但是在那之后它将卡在reader.readLine()上。在这种情况下,它只需要进行一次迭代,因为readLine()将消耗其读取的行,这意味着我认为的下一行将为null,而while循环将终止,但显然并非如此。
还可以对一个writer.flush()使用多个writer.write(string)吗?很好奇,因为我还尝试过使用一次刷新在服务器中分离两个消息变量,但仍然遇到卡住的相同问题。
客户:
while(!message.equals("Quit") || !message.equals("quit"))
{
System.out.println("Test1");
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
System.out.print("Message to send: ");
message = scanIn.nextLine();
System.out.println("Test2");
writer.write(message + "\r\n");
writer.flush();
String serverMsg;
System.out.println("Test3");
for (String line = reader.readLine(); line != null; line = reader.readLine())
{
System.out.println(line);
System.out.println("Test4");
}
/*while ((serverMsg = reader.readLine()) != null)
{
if(message.equals("quit") || message.equals("Quit"))
{
break;
}
System.out.println("Test4");
System.out.println(serverMsg);
}*/
System.out.println("Test5")
}
System.out.println("Test6");
服务器:
System.out.println("Server: Running");
ServerSocket mySocket = new ServerSocket(8189);
Socket socket = mySocket.accept();
while (true)
{
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String message = reader.readLine().trim();
String message2 = message;
message = ProjectSQL.avgFromSQL(message.substring(0,1), message.substring(1,2));
message2 = ProjectSQL.avgFromSQLCurrent(message2.substring(0,1), message2.substring(1,2));
writer.write(message+" "+message2+"\r\n");
writer.flush();
}