我正在通过TCP连续地从我的服务器向客户端发送许多图像.现在在客户端,如何有效地检测到这是我的一个图像的结束,所以将其写入文件系统然后下一个图像,依此类推.
最好的祝福, ...
one*_*sse 33
好吧,不能保证你不会在jpeg图像中找到FFD9.找到jpeg图像结束的最佳方法是解析它.除了FFD0到FFD9和FF01(保留)之外,每个标记后面紧跟一个长度说明符,它将为您提供该标记段的长度,包括长度说明符,但不包括标记.FF00不是标记,但出于您的目的,您可以将其视为标记而不使用长度说明符.
长度说明符是两个字节长,它是大端.所以你要做的就是搜索FF,如果后面的字节不是0x00,0x01或0xD0-0xD8之一,只要长度说明符减去两个字节,你就读取长度说明符并在流中向前跳过.
此外,每个标记都可以在任何数量的FF的开头填充.
当你到达FFD9时,你就在流的最后.
当然,您可以逐字阅读流,如果您想要表现,则搜索FF,但这仍然是读者的练习.;-)
dar*_*ioo 16
快速浏览维基百科的JPEG文章会给你答案: