java知識點二 TCP和UDP的聯絡和用途

2021-07-03 09:16:55 字數 2046 閱讀 7638

3.傳輸協議:通訊的規則:常用tcp和udp

二.tcp和udp的用途

udp:

1.將資料來源和目的封裝到資料報中,不需要建立連線

2.每個資料報的大小限制在64k以內

3.因無連線,是不可靠協議

4.不需要建立連線,速度快

主要用於:聊天,對講機就是udp的,面向無連線。即不管在不在,知不知道,它只管傳送,求的是速度。

也不管丟不丟資料,追求速度快。資料被分成包分批傳輸。

tcp:

1.建立連線,形成傳輸資料的通道。

2.在連線中進行大量資料的傳輸。

3.通過三次握手完成連線,是可靠協議。

4.必須建立連線,效率會少低

主要用於:**通話。必須連線,對方同意才可以傳送資料,不能丟失資料。

所以,在使用中:

當對可靠性的要求不是很高,對準確性無要求(不需要準確儲存),但要求速度快時,可以用udp.

類似於聊天,對講機等聲音方面的業務。

當對可靠性要求比較高,必須要有較高的可靠性時就用tcp,但速度會稍微降低。如檔案和程式等。

三.傳輸

1.udp傳輸

udp兩個端點:udp傳送端和udp接收端

udp傳送端

1.建立udp的socket服務。

datagramsocket ds=new datagramsocket()

2.明確資料,並將資料封裝到資料報中。

byte data="datadatadata".getbytes();

datagrampacket  dp=new datagrampacket(buf, buf.length , inetaddress.getbyname(『ip』),port );

3.用socket服務的send方法將資料報傳送出去

ds.send(dp);

4.關閉資源

ds.close();

udp接收端

1.建立udp的socket服務。

datagramsocket ds=new datagramsocket()

2.定義資料報,用於儲存資料。

byte buf=new byte[1024];

datagrampacket  dp=new datagrampacket(buf, buf.length );

3.用socket服務的receive方法將收到的資料儲存到定義好的資料報中

ds.receive(dp);

4.通過資料報的特有方法獲取到具體的資料內容,如ip,埠,資料等。

string ip=dp.getaddress().gethostaddress();

string data=new string(dp.getdata() , 0 , dp.getlength());

int port=dp.getport();

5.關閉資源

ds.close();

2.tcp傳輸

tcp兩個端點:tcp客戶端和tcp伺服器端

tcp客戶端

1.建立tcp的socket服務,明確位址和埠。

socket s=new socket(ip,port);

2.獲取socket輸出流,發給服務端

outputstream out=s.getoutputstream();

out.write("".getbytes());

3.獲取socket輸入流

inputstream in=s.getinputstream();

4.關閉資源

s.close();

tcp伺服器端

1.建立tcp服務端的socket服務,並監聽乙個埠。

serversocket ss=new serversocket(port);

2.通過accept方法獲取連線的客戶端物件

socket s=ss.accept();

3.獲取客戶端傳送過來的資料

inputstream in=s.getinputstream();

4.關閉資源

s.close();

ss.close();

TCP知識點記錄

syn 占用乙個序列號 fin 占用乙個序列號 ack 不占用序列號 mss選項通常在通訊的第乙個報文段,即syn報文段中指明,通知對端本端能接收的最大長度報文段 mss 1024 傳送端a 接收端b 如果此時接收端b向傳送端a傳送的報文段長度大於1024,那麼傳送端a將不接受此報文段 win 40...

TCP面試知識點

最主要的特點 1.tcp是面向連線的運輸層協議 2.tcp是點對點的 3.tcp提供可靠交付的服務 4.tcp提供全雙工通訊。允許通訊雙方的應用程序在任何時候都能傳送資料。5.面向位元組流,這個和udp不同,udp是面向報文的。流指的是流入到程序或者從程序流出的位元組序列。也就是說tcp和udp在傳...

TCP和UDP知識總結

1.tcp粘包 tcp是面向連線 流式傳送的,沒有明確的邊界定義。他有乙個緩衝區,每過一段時間或者快取滿了就傳送出去,造成一次傳送的資料可能是多個包或者包的一部分,這就是傳送端的粘包。接收端的粘包指應用程式沒有及時處理緩衝區中的資料,後續到達的資料繼續放到快取中。解決方法 a.對傳送的資料劃分邊界,...