網路程式設計之UDP協議和TCP協議

2021-08-07 22:44:03 字數 3024 閱讀 7532

udp協議和tcp協議

udp協議(使用者資料報協議): 需要乙個傳送端和接收端;

傳送端:只負責傳送資料,不管接收端是否接收到資料.

在傳輸資料的過程中是允許資料報丟失的;

特點: 1.需要乙個傳送端和接收端;

2.傳送端只負責傳送資料,不管接收端是否接收到資料;

3.在傳輸資料的過程中是允許資料報丟失的;

tcp/ip協議:

特點:1.需要乙個客戶端 和 伺服器端;

2.不允許出現資料報丟失;

3.使用了三次握手的;

tcp:

客戶端:

1.獲得socket物件

socket socket=new socket(address, port);

//引數:address為要連線的電腦ip位址,port為埠

2.然後用socket物件獲得i/o流

outputstream outputstream = socket.getoutputstream();

3.用流寫出檔案(傳送)

outputstream.write(「測試。。。」.getbytes());

4.假如有伺服器回執資訊

inputstream inputstream = socket.getinputstream();

5.然後讀取回執資訊

int read = inputstream.read();

6.最後關閉socket流

socket.close();

public

class tcpclient

socket.shutdownoutput();

//服務端返回資訊處理

inputstream inputstream = socket.getinputstream();

byte c = new

byte[1024];

int len = inputstream.read(c);

system.out.println(new string(c, 0, len));

outputstream.close();

socket.close();

system.out.println("傳送完畢!");

}}

服務端:

1.獲得serversocket物件

serversocket serversocket=new serversocket(port);

//此處port必須跟客戶端埠保持一致, 不然接收不了資料

2.用serversocket物件的accpet()方法,獲得socket物件1

socket socket = serversocket.accept();

3.用獲得的socket物件建立讀取流,讀取客戶端socket發來的訊息

inputstream inputstream = accept.getinputstream();

int read = inputstream.read();

4.關閉socket跟serversocket

socket.close();

serversocket.close();//這個可以不關

public

class tcpserver

outputstream outputstream = socket.getoutputstream();

outputstream.write("接收到了,大兄弟!!!".getbytes());

inputstream.close();

socket.close();

}}

udp:

傳送端:

1.獲得datagramsocket物件

datagramsocket datagramsocket=new datagramsocket();

2.建立資料流,獲取鍵盤輸入

bufferedreader bufferedreader=new bufferedreader(new inputstreamreader(system.in));

3.迴圈把輸入的內容封裝到datagrampacket資料報物件中

string line=null;

while ((line=bufferedreader.readline())!=null)

4.關閉socket流

datagramsocket.close();

public

class udpsent

datagramsocket.close();

}}

獲取端:

1.獲得datagramsocket物件注意要選帶埠引數的構造方法

datagramsocket datagramsocket=new datagramsocket(9001);

2.建立資料報,並建立datagrampacket物件,兩個引數的。

byte bs=new byte[1024];

datagrampacket datagrampacket=new datagrampacket(bs, bs.length);

3.用socket的receive方法獲得資料報

datagramsocket.receive(datagrampacket);

4.用datagrampacket解析資料

byte data = datagrampacket.getdata();

system.out.println(new string(data, 0, data.length));

5.關閉socket流

datagramsocket.close();

public

class udpget

}

TCP協議和UDP協議

前面我們學習了網路的7層模型,其中談到傳輸層的相關協議有tcp transmission control protocol 傳輸控制協議 和udp user datagram protocol 使用者資料報協議 一 tcp協議 tcp transmission control protocol 是一...

TCP協議和UDP協議

tcp transfer control protocol 是面向連線的,所謂面向連線,就是當計算機雙方通訊時必需經過先建立連線,然後傳送資料,最後拆除連線三個過程。tcp在建立連線時又分三步走 第一步,是請求端 客戶端 傳送乙個包含syn即同步 synchronize 標誌的tcp報文,syn同步...

TCP協議和UDP協議

區別 面向連線vs無連線 tcp建立乙個連線需要3次握手ip資料報,斷開連線需要4次握手。另外斷開連線時發起方可能進入time wait狀態長達數分鐘 視系統設定,windows一般為120秒 在此狀態下連線 埠 無法被釋放。udp不需要建立連線,可以直接發起。可靠vs不可靠 tcp利用握手 ack...