TCP & UDP

         網路導論 TCP & UDP Sever端 Socket Client端 執行緒Tread

 

首頁
前言
網路導論
Linux 視窗程式
整合成果展示
心得與感想

 

 

                                                                 TCP & UDP

TCP網路傳輸

                         

                    

資料傳輸的量設為一次2048 byte,為了防止沒有資料可傳時做傳送的動作,浪費資源

或造成錯誤,使用兩個counter宣告成外部變數,在傳輸前先做比較,防止不必要的傳

輸造成Server端如果encoder的檔案還沒壓好,而網路的部分就開始做傳輸動作,而

造成錯誤,同樣的在Client撥放地方也要做這種機制,用兩個外部變數counter去做

撥放和接收的比較,防止接收的速度來不及 : 沒有新的資料可以撥放,而decoder做

撥放的動作,造成錯誤

while(file_read==file_write)

    sleep(1);

while(doq==1)

 

sleep(1);

 

file_read++;

 

    client接收端開始時檔案寫入counter(file_write)等於0,每經過一次的接收2048 byte做

    file_write++的動作,將計數器加一,而撥放計數器(file_read) ,每撥完一次2048 byte,

  同樣加一寫入檔案counter(file_write)等於接收撥放counter(file_read) ,代表沒有新的檔

  案進來,可以供撥放,sleep一秒等待有新的檔案寫入再撥放,直到file_ write >file_read

  代表有新進的資料才可以去執行撥放的動作。同時這種機制也可以讓我們實現撥放暫

  停功能,可以由一個外部變數doq的值來決定是否要讓撥放器變成暫停的狀態,例如我們

  讓一個按鍵按下之後,doq值等於1,而doq=1的狀況也會讓撥放器sleep一秒,不斷sleep

  直到doq等於一的狀況被解開,才讓撥放器繼續做撥放的動作

 

UDP網路傳輸

 

 

封包的類型

完整成功的監控系統中UDP會傳輸四種溝通的封包 ,了解對方的情況和狀態,

作為Server端和Client端之間的溝通的橋樑,這四個封包分別是起始封包,使用

名稱和密碼的封包,傳輸開始封包,結束監聽的封包因此可以傳一個暗語和對方

比對,例如起始封包,可以連傳2048個0做暗號,代表他在準備開始監聽的狀態,

將自己的狀態告訴對方。前三個封包如果只要有錯誤,Server端會關掉socket,

return回起始監控的bind的狀況,而Client端也會關掉socket,並且離開網路傳輸

的執行緒前三個封包都正確,則Server端會打開encoder壓檔案和檔案傳輸,而

Client端會開啟執行緒去執行接收檔案連結的動作

 

首頁 | 網路導論 | TCP & UDP | Sever端 | Socket | Client端 | 執行緒Tread