无法为客户端/服务器发送/接收字符串

时间:2016-11-22 00:37:19

标签: java sockets server client

从发送和接收客户端到服务器的字符串时遇到一些麻烦。假设我已正确设置套接字。 这就是我用来发送/接收服务器端的内容:

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);

它会挂起,服务器端不会收到发送的初始消息。我不知道什么是错的,我只想得到服务器的回复。任何帮助表示赞赏。感谢

1 个答案:

答案 0 :(得分:0)

BufferedReader.readLine()会为您删除换行符。

这意味着,在客户端,inputLine没有尾随\n,这意味着客户端没有将结束信号发送到服务器,反之亦然。

客户端

toServer.write(...);
toServer.newLine(); // <--- send new line
toServer.flush();   // <--- flush buffered data

服务器应该做类似的事情。