我已經開始使用C#學習TCP網絡。我遵循各種教程,查看了示例代碼,並通過異步連接和寫入/讀取來運行TCP服務器和客戶端。我也有文件傳輸工作。跟蹤文件傳輸百分比
現在我希望能夠跟蹤服務器和客戶端的傳輸進度(0% - > 100%)。當啓動從服務器到客戶端的傳輸時,我發送期望的文件大小,所以客戶端知道需要多少字節,所以我想我可以很容易地做到:curCount/totalCount在客戶端上。但是我對如何爲服務器做這件事感到困惑。
服務器如何準確地告訴客戶端的轉移情況?我應該根據服務器自身的狀態(通過networkStream.BeginWrite()回調,還是通過從磁盤和網絡寫入的塊加載)猜測?還是應該讓客戶端繼電器回到客戶端完成的服務器?
我想知道什麼時候關閉連接,以及能夠直觀地顯示進度。服務器是否應該信任客戶端關閉連接(禁止網絡錯誤/超時/等)?或者服務器可以在寫入流時立即關閉連接?
只要完成將所有字節寫入流,服務器就可以安全地關閉連接。您永遠不會確切地知道客戶端的狀態來自服務器端,而不會對文件傳輸造成負面影響,但您可以跟蹤發送的百分比。 – itsme86
好吧,我想這可能是它的樣子。謝謝。 – user42524