因为inputStream.read(byte)是尽可能的读byte[]大小的数据,当你的服务端发送数据速度迹亩大于客户端读取数据的速度时,就会出现客户端读到多帧连在一起的报文。而这些发送数据,读取数据的速度是未知的。所以我猜州稿们需要人为的来做一些调整。比如说每一帧作为一行写入Socket,穗孝客户端每次从socket读取一行。这样客户端每次都是读取一帧。
以上情况可以这样实现:在服务端使用PrintWriter
PrintWriter writer=new PrintWriter(socket.getOutputStream());
writer.println(data);
客户端可以使用BufferedReader
BufferedReader reader=new BufferedReader(new BufferedInputStream(socket.getInputStream()));
String s=reader.readLine();