您正在写的字符串的末尾没有行尾。
String inputText = input.readLine();
writer.write(inputText);
System.out.println("Client 2");
该inputText
字符串不包括您键入的行尾。然后将其原样写入服务器。但是,服务器尝试读取一行:
String s = br.readLine();
System.out.println("Server 3");
因此它将一直等待,直到客户端发送换行符。但是到目前为止,客户端正在等待服务器的答复,现在它们已陷入僵局。
因此,您应该writer.newLine()
向客户端以及服务器的回显添加a ,这也会遇到相同的问题。每次写入后,还建议writer.flush()
在服务器和客户端上都使用。否则,它可能要等到缓冲区已满后才能进行实际写入,并且将导致相同的死锁。