前往
大廳
主題

【JAVA筆記】網路傳輸3 - TCP 與 UDP 的差別與使用

LF(小魚) | 2021-08-02 13:24:51 | 巴幣 0 | 人氣 471


一、前言:
上一篇上上篇介紹了Socket,這次要介紹另一種傳輸法

二、介紹:
TCP ,也就是之前提到過的Socket,使用方式是先建立好伺服端與個人端的連線再做溝通,而UDP的作法不同,而是不管有沒有連到,先處理再說
UDP 在Java裡是使用一個叫DatagramSocket的類別來做處理,UDP要注意的是,他並不會分所謂的伺服端和個人端
先簡單建立物件,後面的port是指定連接埠,如果不指定,則會隨機找沒在用的port來使用

要溝通當然還要另一端

接下來我把有指定port當伺服端,所以它要接收資料並打印出來

要注意的是,DatagramSocket只能傳byte陣列,並且要包成封包(DatagramPacket)來傳輸,再來是個人端

個人端的DatagramPacket記得要加上地址,就像郵差送信,沒寫地址會不知道要送去哪裡

執行看看吧

要回傳資料的話,直接從DatagramPacket拿對方的地址和連接埠,就能原路返回了

三、比較:
優點:
TCP: 進行傳輸時能確保有人能接收,會自動確認資料順序與確保資料完整性
UDP: 不必確定有人接受就能直接開始傳輸,也不會因為太久沒回應而Timeout
缺點:
TCP: 必須要和對方接上才能開始傳輸,會因為太久未接收資料而Timeout
UDP: 封包有資料量上限(65536個byte),且有可能丟了資料,但對方沒收到,各封包接收順序因網路狀況與傳輸路徑而有所更動

四、連結:


創作回應

相關創作

更多創作