0
因此,這裏是我的客戶怎麼樣子:客戶端的Socket停留在用戶輸入
Socket socket = new Socket("localhost", 1234);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
while (true) {
String userInput = stdIn.readLine();
if (userInput != null) {
String message = username + ":" + userInput + "\n";
out.println(message);
out.flush();
}
String serverMessage = in.readLine();
if (serverMessage != null){
System.out.println(serverMessage);
}
}
客戶有權監聽用戶的輸入,發送給其他客戶端,並具有監聽其他客戶端的消息。這段代碼確實如此,但會停留在監聽用戶輸入的第一行。有什麼解決方法嗎?
它被卡在「String serverMessage = in.readLine();」?正確? – Khanna111 2014-12-04 06:12:14
@ Khanna111GauravKhanna是 – Marijus 2014-12-04 06:18:58
如果'readLine()'返回null,則需要對它做些什麼。這意味着對等關閉了連接,所以您必須(1)退出此循環並(b)關閉套接字。目前您將無限期地循環播放。 – EJP 2014-12-04 07:06:59