1

我有一个服务器首先发送文件大小和文件数据的情况。在客户端读取时如何区分整数值和文件数据?

服务器的相同代码(os 是缓冲的输出流):

            // Construct a 1K buffer to hold bytes on their way to the socket.
            byte[] mybytearray = new byte[(int) myFile.length()];

          //File Size
            os.write((int) myFile.length());

    FileInputStream fis = null;
    System.out.println("test+sendbytes");
    // Copy requested file into the socket's output stream.
      try {
          fis = new FileInputStream(myFile);
      } catch (FileNotFoundException ex) {
          // Do exception handling
      }
      BufferedInputStream bis = new BufferedInputStream(fis);

      try {
          bis.read(mybytearray, 0, mybytearray.length);
          os.write(mybytearray, 0, mybytearray.length);
          os.flush();
          os.close();
          os.close();

          // File sent, exit the main method
          return;
      } catch (IOException ex) {
          // Do exception handling
      }
4

1 回答 1

1

int除非您假设所有文件的长度不超过 255 个字节,否则您需要将长度写为 an 。试试 DataOutputStream.writeInt()

对于阅读,您必须承担订单。即您假设先发送长度,然后发送内容。使用 DataInputStream.readInt() 读取长度。

于 2012-04-14T10:12:11.373 回答