我正在使用旧学校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();
答案 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")
。