2014-03-04 67 views
1

我正在編寫一個通過TCP層發送文件的協議。命令通常如何與有效載荷分離?我事先知道有效載荷有多大,我應該事先發送長度嗎?在TCP上運行的寫入協議

我也在考慮只使用HTTP來傳輸文件,有關這是否會花費更少的時間的任何意見?我正在使用.NET,因此底層協議已經運行良好。

回答

1

命令通常如何與有效載荷分離?我事先知道 有效載荷有多大,我應該事先發送長度嗎?

是。典型的模式是發送一個固定長度的頭(例如,以big-endian整數格式的字節數),接着是數據的實際字節(並且可選地根據需要重複)。一定要爲你的頭部使用固定寬度的類型(例如uint64_t而不是unsigned long),因爲你可能(大概)像你的協議一樣工作,不管它編譯的是什麼機器。

我也在考慮只使用HTTP來傳輸文件,任何 的意見,這是否會花費更少的時間?我正在使用.NET ,因此底層協議已經運行良好。

無論哪種方式將工作正常。使用任何你最舒服的方式。

1

使用更高級別的協議。這將爲您節省大量時間。 HTTP聽起來很合適,因爲你似乎有一個請求 - 響應模式。

編寫TCP協議很困難。最好的方法是:不要這樣做。

如果HTTP不適用於您,請調查協議緩衝區。

+0

TCP協議確實不是那麼難。如果您可以讀取和寫入文件,則可以讀取和寫入TCP流。 –

+0

@JeremyFriesner這是非常不真實的。只要看看所有的TCP問題即可。文件非常簡單。 – usr