我正在尝试让Java服务器和客户端进行通信。为了将数据流传输到服务器,我有以下代码:
Socket ClientSocket = null;
ClientSocket = new Socket(IPAddress, portInt);
DataOutputStream outToClient = new DataOutputStream(ClientSocket.getOutputStream());
outToClient.writeBytes(command);
outToClient.flush();
对于我有的服务器:
ServerSocket mysocket = new ServerSocket(8081);
Socket connectionsocket = mysocket.accept();
BufferedReader inFromClient =
new BufferedReader(new InputStreamReader(connectionsocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionsocket.getOutputStream());
//program hangs here, client not sending
GetRequest = inFromClient.readLine();
System.out.println("Received: " + GetRequest);
这些只是整个代码的一小部分,我发现当readLine()时程序挂在服务器端;到达了。我试图用writeBytes(命令)发送数据;其中command是一个字符串。有什么建议?感谢。
答案 0 :(得分:1)
readbytes到readline
停在那儿。如果您使用的是readLine()
,那么您使用的是BufferedReader
Reader
,这意味着您应该使用Writer
与之对话,这意味着您应该使用BufferedWriter
,当你正在读行时,你必须写行,这意味着写一个行终止符(你目前没有这样做),这意味着你应该使用BufferedWriter.newline()
。
或PrintWriter.println(),
但不要忘记检查错误,因为它会吞下异常。
答案 1 :(得分:-1)
不要直接使用readLine
相反尝试这个
If( inFromClient.ready()){
// read string here.
}
缓冲区可能没有准备就绪并且您正在尝试阅读。所以它可能会产生问题。