Java 如果在里面
问题解决:我忘记在客户端刷新PrintWriter 我对这个代码有问题。输出是1,2,3,4,5,5.5,但它不会达到6或5.75,我不知道出了什么问题。它是一个使用套接字的客户机/服务器应用程序 客户:Java 如果在里面,java,if-statement,while-loop,inputstream,outputstream,Java,If Statement,While Loop,Inputstream,Outputstream,问题解决:我忘记在客户端刷新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.getI
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();}
}
您的代码可能会阻塞readLine调用。readLine会一直阻塞,直到检测到\n或EOF为止,因此除非您的套接字连接实际发送了其中一个终止,否则它将等待一个终止。您的代码可能会阻塞readLine调用。readLine会一直阻塞,直到检测到\n或EOF为止,因此,除非您的套接字连接实际发送了其中一个终止,否则它将等待一个终止。它可能在br.readLine上被阻塞。确保服务器上的数据可用。它可能在br.readLine上被阻止。确保服务器上的数据可用,但如果未检测到任何内容,则应返回null并写入5.75,然后重试。@KevinFurmanski不会打印5.75,因为它从未到达那里。您的代码在readLine调用时被卡住。但如果它没有检测到任何内容,则应返回null并写入5.75,然后重试。@KevinFurmanski不会打印5.75,因为它从未到达那里。您的代码在readLine调用时被卡住。