Client端
Client端主要可以分成三個部分,建立連線,連線終止,網路傳輸 流程如圖:
建立連線 當面板的連線按鍵被按下時,會去開一個執行緒,執行網路傳輸的動作,建立和 server端的連線,連線後發送前三個封包做溝通。 第一個封包詢問server是否可以做連線準備傳輸 第二個封包發送使用者名稱和密碼 第三個封包發送開始傳輸
成功接收到這三個封包,server打開encoder和網路傳輸,假使當中有一個封包錯 誤,代表雙方處在的狀態不同或使用者密碼錯誤,這會使server重新回到 bind狀態,等待下一次監聽,而client離開執行緒,面板出現連線狀態為Idel, 告訴使用者,連線失敗。
資料傳輸 當連線建立成功之後,按下撥放,client端會開一個執行緒,去執行接收encoder壓 好的資料,並且在使用者client端,再開一個執行緒,執行影像撥放的動作,在這個 階段必須要達到以下目的。 Ø Server端要知道encoder壓的檔案目前的大小,避免傳的時候沒有資料可傳,造成 錯誤。 Ø Client端可以利用counter方式做比較,防止接收速度來不及,沒有新的資料可以撥 放,而decoder做撥放的動作,造成資源浪費和錯誤,同時可以完成暫停的功能。 結束監聽 按下中斷的按鍵,client開一個執行緒,發送結束監聽的封包,給server告訴他監聽結 束,而server端會做關閉網路傳送和encoder壓檔案的動作,在這個階段必須要達到這 個目的。 Ø Server必須全自動 化,就算client沒有正常結束,之後依然要可以恢復正常傳輸狀 態,使以後的傳輸恢復正常。 也就是說server只要打開第一次,就可以不斷的等待client做連線,做監聽,即使 client端沒有正常按下中斷的按鈕,也能夠繼續回到監聽有沒有client要連進 來的狀態。由於有封包 在檢查雙方的state,使得上次的不正常結束在下一次連線時 會先連線失敗,但server端會再度回到一開始監聽有沒有client連進來的狀態, 下一次連線又可以恢復正常使用。
|