問題解決:我忘記在客戶端刷新PrintWriter
。如果在裏面,而
我對此代碼有問題。輸出是1,2,3,4,5,5.5,但它不會達到6或5.75,我無法弄清楚什麼是錯的。這是一個使用套接字的客戶端/服務器應用程序。
客戶:
System.out.println("1");
socket = new Socket("localhost", 1035);
System.out.println("2");
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println("3");
pw = new PrintWriter(socket.getOutputStream());
System.out.println("4");
pw.println("hello");
String message = null;
System.out.println("5");
boolean done = false;
while(!done) {
System.out.println("5.5");
if((message = br.readLine()) != null) {
System.out.println("6");
cardname.setText(message);
done = true;
}
System.out.println("5.75");
}
System.out.println("7");
服務器:
@Override
public void run() {
String message = null;
boolean done = false;
try {
System.out.println("5.25");
while(!done) {
System.out.println("5.5");
if((message = br.readLine()) != null) {
System.out.println("6");
String resp = handleRequest(message, sock.getInetAddress());
pw.println(resp);
pw.flush();
System.out.println("7");
}
System.out.println("5.75");
}
connDec();
} catch(Exception ex) {ex.printStackTrace();}
}
它可能被'br.readLine()'阻塞。確保服務器上的數據可用 – Reimeus