在同一套接字连接中发送具有文件ID的多个文件

时间:2013-06-25 09:05:01

标签: java sockets

我需要通过套接字发送一些文件,我正在试图弄清楚如何做到这一点。发送单个文件非常容易,但是我需要在连接后发送一个表示文件唯一ID的整数,然后发送文件内容。完成后,我必须发送另一个ID及其文件内容。所以我需要这样的东西:

  1. 连接
  2. 如果没有要发送的文件请转至6
  3. 发送ID
  4. 发送文件
  5. 转到2
  6. 关闭连接
  7. 我发现发送文件的大多数解决方案使用byte []作为缓冲区,我不知道如何区分id和文件内容。我该怎么办?

1 个答案:

答案 0 :(得分:2)

您需要分隔TCP流,以便了解一个文件何时开始和结束。您需要创建自己的协议。

一件简单的事情是先发送一个带有文件ID和文件大小的固定长度的小标题。

e.g。

  • 发送'file-id'一个4字节的文件ID
  • 发送'文件大小为8字节文件大小
  • 发送'文件大小'字节的文件内容。

这可以在同一个TCP套接字上重复多次。

接收端需要:

  • 读取4个字节,将其解释为file-id
  • 读取8个字节,将其解释为文件大小
  • 读取'file-size'(来自上一步)字节,即文件内容。

收到所有字节后,它可以重新开始,读取文件ID和文件大小的新标题。