我在编写从客户端到服务器的字节数组读取问题。客户端实际上写入了所有字节,但是服务器似乎无法读取它。这是客户端和服务器端的代码

Socket sock = new Socket(Interface.SERVER_IP, 4444);
PrintStream os = new PrintStream(sock.getOutputStream());

os.println("3");
DataOutputStream dOut = new DataOutputStream(sock.getOutputStream());

dOut.writeInt(data.length); // byte array created above
dOut.write(data);


服务器端是:

DataInputStream clientData = new DataInputStream(clientSocket.getInputStream());
int length = clientData.readInt();
System.out.println(length);
byte[] data = new byte[length]; // read length of incoming message
if(length>0) {
    clientData.readFully(data, 0, data.length); // read the message
}


服务器似乎在读取字节数组长度的行被阻塞。请我真的需要帮助解决这个问题

最佳答案

写入数据后,刷新输出:

        dOut.writeInt(data.length); // byte array created above
        dOut.write(data);
        dOut.flush();


或者,关闭流(如果您不想再次使用它)...

        dOut.writeInt(data.length); // byte array created above
        dOut.write(data);
        dOut.close();


另请注意,您的PrintWriter正在打印一个字符串值(“ 3”)。您正在将多余的数据打印到服务器上似乎没有消耗的流中。

09-05 13:26