我正在尝试在服务器和客户端之间创建一个聊天应用程序,它们是单独的类。我没有复制整个代码,但这是我不确定设置是否正确的部分:
服务器:
ServerSocket s = null;
Socket c = null;
s = new ServerSocket(5002);
c = s.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(c.getInputStream()))
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(c.getOutputStream()));
out.flush();
String line;
line = in.readLine();
out.write("#W|Welcome");
line = in.readLine();
out.write("#W|Welcome");
line = in.readLine();
out.write("#W|Welcome");
客户:
Socket socket = new Socket("localhost", 5002);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream ()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String line;
out.flush();
out.write("#J|test");
line = in.readLine();
out.write("#J|test");
line = in.readLine();
客户端执行 out.println()
后,服务器的 in.readLine()
获取该行。但当情况相反时,客户端会在 in.readLine()
处继续等待。 (我使用调试器并观察服务器执行 out.println()
并跳过它,而客户端仍然停留在 in.readLine()
。
我的数据流设置是否正确,或者我的代码在其他地方是否可能存在错误?我不确定如何检查调试器是否正确连接了流。
最佳答案
[引用我上面的评论:]
There is nothing here that [reads or] writes lines.
这仍然是事实。你所拥有的只是:
out.write("#W|Welcome");
等等
don't forget to call newLine() as necessary
你忘了。
关于java - 客户端的 BufferedReader 未使用套接字从服务器接收行(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34123804/