2013-03-08 243 views
0

我必须做一个客户端服务器文件同步应用程序......我想知道,而不是每个文件类型有一个单独的MIME类型和代码,是否可以只压缩文件类型,传输到服务器并解压缩它?C#文件传输通过套接字

它会工作还是我将不得不为每个文件确定MIME类型并为每个MIME类型进行代码处理?

+2

如果您通过套接字传输,为什么您需要MIME类型?只需发送二进制数据,前面加上关于大小和文件名(如果需要)的明确信息。 – 2013-03-08 14:59:10

回答

0

套接字以字节为单位进行处理,因此,只要客户端和服务器知道该协议,则无论文件以什么格式发送。你可以创建你自己的协议。例如,它可能采用{messagelength},{mimetype},{fileasbytearray}的格式。这样,你的客户端就知道如何解析最终的消息(即前4个字节可能长(假设为int),然后是你的mimetype,然后是文件的实际字节数组)。

如果您一直使用相同的格式,例如zip文件,那么您不需要mime类型。请记住,如果您打算扩展未来,那么将协议设计为易于扩展是个好主意。

+0

据我所知,插座处理字节,但一旦客户端接收到字节,它必须创建一个文件,并在文件中写入这些字节...在这一点上需要一个MIME类型... 我的问题是我有太多的文件类型传输,所以我想知道,如果我可以压缩所有的文件,传输,接收,创建文件和解压缩...将工作,或者我仍然需要MIME类型... 当我在客户端解压时,我需要文件类型,那么对吧? – 2013-03-08 15:03:48

+0

发送zip文件很好。在这种情况下,你不需要知道mime类型,因为你知道它总是一个zip文件。压缩文件包含的内容并不重要,因为您正在发送zip文件本身。假设发送已经成功,收到的字节是发送的zip文件的直接副本。因此,您的解压缩程序知道如何自动读取它。 – keyboardP 2013-03-08 15:07:23