BufferedReader上的Java客户端套接字阻塞?

时间:2012-10-23 21:11:59

标签: java sockets io bufferedreader printwriter

我正在使用旧学校java.net.Socket

我的客户端连接到服务器并执行:

BufferedReader in =
   new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String fromServer = in.readLine();

它挂在in.readLine()。

我的服务器接受来自客户端的连接并执行:

PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.print("Hello client\n");

我的期望是out.print(“Hello client \ n”);如果被调用,客户端应该停止阻塞并继续。

我做错了什么?

PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in =
   new BufferedReader( new InputStreamReader(clientSocket.getInputStream()));
String fromServer = in.readLine();

2 个答案:

答案 0 :(得分:3)

我猜你没有打电话out.flush();PrintWriter.flush

来自Javadoc

  

autoFlush - 布尔值;如果为true,则println,printf或format方法将刷新输出缓冲区

所以Autoflush不适用于print,您需要手动调用flush()

答案 1 :(得分:2)

当您应该调用自动刷新的out.print("Hello client\n")时,您正在调用未自动刷新的out.println("Hello client")