我打算用微控制器发送和接收文件。我为发送者和接收者写了一个简单的协议,但是我在重建文件时遇到了一些麻烦。我以原始二进制流的形式发送数据。但是,我没有在文件本身中找到fileinfo(name,ext,size等)的位置。文件信息存储在文件中的哪个位置?如果操作系统不存储在文件中,操作系统如何知道所有这些信息? (例如名称,扩展名,大小等)
琐碎的问题:我是否应该使用协议标头附加此文件信息?或者我应该将它附加到文件二进制数据?
答案 0 :(得分:0)
您需要自己将该信息附加到二进制数据中。如果您有二进制流,我建议(最简单)您提供包含所有文件元信息的固定大小标头。然后附加文件的内容。
为什么固定尺寸?好吧,否则接收者不知道文件内容的起始位置。您还可以在流的前X个字节中提供标头大小,然后使用可变大小的标头。如你所愿,但我更喜欢固定大小的解决方案。
固定大小标题的示例:
<255 bytes file name><8 bytes file size><Content...>
动态大小标头的示例:
<4 bytes length of file name><x bytes file name><8 bytes file size><Content...>
让我强调一点,您还要以字节为单位传输内容的大小,这样接收方就知道要读取多少字节!你知道,数据包可能是碎片化的吗?
答案 1 :(得分:0)
你的自制&#34;协议&#34;工作?
文件存储自己的大小非常罕见,底层文件系统负责跟踪(名称包括扩展名,大小,权限,修改时间......)。
您可以将大小信息放在标题中,或者如果您确定某个字节序列从不作为有效负载发送,您可以将其用作终止序列来告诉接收者停止接收。