2013-03-08 151 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