从发送和接收客户端到服务器的字符串时遇到一些麻烦。假设我已正确设置套接字。 这就是我用来发送/接收服务器端的内容:
fromClient = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
toClient = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
String clientInput;
clientInput = fromClient.readLine();
是我的服务器从客户端接收输入的方式。
客户方同样的交易:
toServer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
fromServer = new BufferedReader(new InputStreamReader(socket.getInputStream()));
inputLine = bufferedReader.readLine(); //inputLine reads from the console
toServer.write(inputLine);
我可以向服务器发送消息,它会收到消息,但是当我取消注释该位以便客户端从服务器接收响应时:
// serverInput = fromServer.readLine();
//
// System.out.println(serverInput);
它会挂起,服务器端不会收到发送的初始消息。我不知道什么是错的,我只想得到服务器的回复。任何帮助表示赞赏。感谢
答案 0 :(得分:0)
BufferedReader.readLine()
会为您删除换行符。
这意味着,在客户端,inputLine
没有尾随\n
,这意味着客户端没有将结束信号发送到服务器,反之亦然。
客户端
toServer.write(...);
toServer.newLine(); // <--- send new line
toServer.flush(); // <--- flush buffered data
服务器应该做类似的事情。