3

我正在使用旧学校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();
4

2 回答 2

3

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

来自Javadoc

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

所以对你Autoflush不起作用,print你需要flush()手动打电话

于 2012-10-23T21:13:06.990 回答
2

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

于 2012-10-24T03:26:13.543 回答