2010-07-14 57 views
0

我正在構建一個C++應用程序服務器 - 客戶端,客戶端每200毫秒向服務器發送一個圖像(170kb)。使用套接字進行圖像序列傳輸,noob問題

使用UDP,未壓縮的文件超過每個數據報允許的64kbs(如果可能,我想避免壓縮文件)。

另一方面,我在設置TCP連接時遇到問題,我管理建立了一個連接,但只發送了第一個文件,是否需要連接,發送文件,斷開連接併爲所有進程執行相同的過程文件?

兩個套接字都是使用boost asio設置的。我應該另一個協議?

在此先感謝

回答

1

首先,對於使用UDP。 TCP是爲您所需要的而設計的,而且它本身已經做了很多。從你的POV開始,TCP連接總是以某種方式工作,而使用UDP則必須處理數據包排序,數據包錯誤等。例如,一個映像需要3個數據包進行傳輸,UDP確實是而不是保證所有3包將在目的地驅車,如果他們這樣做,並不能保證他們將按照您發送的相同順序到達。

現在,對於TCP,重新建立每個文件的新連接都可以完成,但是這不是必須的。理想情況下,您的代碼應檢查連接是否已建立,如果沒有,請重新連接。現在,爲什麼只有第一個文件被轉移,我無法猜出爲什麼,因爲它很可能是由於你的實現(即我不能通過我的水晶球看到代碼,它必須是未充電的或某物;-))。但問題是,由於TCP或Boost :: ASIO的限制,肯定是而不是