網路程式設計中的 TCP UDP 了解一下

2021-10-25 05:43:55 字數 3597 閱讀 1098

找到主機後,如何可靠、高效地進行資料傳輸(網路通訊協議)

ip:唯一的標識 internet 上的計算機

ipv4:4個位元組組成。以「點分十進位制」表示

​ipv6:16個位元組組成。寫成 8 個無符號整數,每個整數用四個十六進製制位表示,數之間用冒號(:)表示

公網位址(全球資訊網使用)

埠被規定為乙個16位的整數:0~65535

在同一主機中,不同的程序有不同的埠

埠被分為:

公認埠:0~1023。被預先定義的服務通訊占用(如:http 占用 80 埠、ftp 占用 21 埠)

註冊埠:1024~49151。分配給使用者程序或應用程式(如:tomcat 占用 8080 埠、mysql 占用 3306 埠)

動態/私有埠:49152~65535

socket = ip + 埠

網路協議太複雜,所以,將通訊協議進行分層。

由上至下為:應用層、傳輸層(tcp、udp)、網路層(ip)、資料鏈路層、物理層

tpc 與 udp 的區別:

tcp 協議:

​         使用 tcp 協議前,必須先建立 tcp 連線,形成傳輸資料通道

​         傳輸前,採用「三次握手」方式,點對點通訊,是可靠傳輸

​         tcp 協議進行通訊的兩個應用程序:客戶端、服務端

​         在連線中,可進行大資料量的傳輸

​         傳輸完畢,需要釋放已建立的連線(效率低)

udp 協議:

​         將資料、源、目的封裝成資料報,不需要建立連線

​         每個資料報的大小限制在 64k 內

​         傳送不管對方是否準備好,接收方收到也不確認,不可靠傳輸

​         可以廣播傳送

​         傳送資料結束時,無需釋放資源(開銷小、速度快)

場景一:客戶端通過 tcp 協議向服務端傳送資料,服務端接收後,將收到的資料列印到控制台中,並指明來自於哪個客戶端

public

class

tcpserver

*/// 建立乙個位元組資料輸出流

bytearrayoutputstream baos =

newbytearrayoutputstream()

;byte

buffer =

newbyte[5

];int len =0;

// 讀取輸入流中的資料

while

((len = is.

read

(buffer))!=

-1) system.out.

println

(baos.

tostring()

);system.out.

println

("收到了來自於:"

+ socket.

getinetaddress()

.gethostaddress()

+"的資料");

baos.

close()

; is.

close()

; socket.

close()

; ss.

close()

;}}

public

class

tcpclient

}

場景二:客戶端將檔案傳送給服務端,服務端將檔案儲存起來

public

class

tcpserver2

fos.

close()

; is.

close()

; socket.

close()

; ss.

close()

;}}

public

class

tcpclient2

fis.

close()

; os.

close()

; socket.

close()

;}}

場景三:客戶端將檔案傳送給服務端,服務端將檔案儲存起來。並且,服務端需要返回「傳送成功」給客戶端,然後關閉相應連線

public

class

tcpserver3

// 服務端給予客戶端反饋

outputstream os = socket.

getoutputstream()

; string data =

"傳送成功"

; os.

write

(data.

getbytes()

);fos.

close()

; is.

close()

; os.

close()

; socket.

close()

; ss.

close()

;}}

public

class

tcpclient3

// 給出明確指示(傳輸完畢)

socket.

shutdownoutput()

;// 客戶端接收服務端傳送過來的資料

inputstream is = socket.

getinputstream()

; bytearrayoutputstream baos =

newbytearrayoutputstream()

;byte

buffer =

newbyte[20

];int length =0;

while

((length = is.

read

(buffer))!=

-1) system.out.

println

(baos.

tostring()

);fis.

close()

; os.

close()

; baos.

close()

; socket.

close()

;}}

public

class

udpreceiver

}

public

class

udpsender

}

url的基本結構由5部分組成:

《傳輸協議》://《主機》:《埠號》/《檔名》#片段名?引數列表

網路程式設計中TCP UDP區別

tcp和udp的區別 tcp傳輸控制協議 是基於連線的協議,也就是說,在正式收發資料前,必須和對方建立可靠的連線 udp user data protocol,使用者資料報協議 是與tcp相對應的協議。它是面向非連線的協議,它不與對方建立連線,而是直接就把資料報傳送過去!http和https htt...

網路程式設計,tcp udp

架構 程式設計師開發的一種模式 c s架構 客戶端 伺服器模式 b s架構 browser瀏覽器 伺服器模式 b s架構的優勢 統一了應用的介面 網路通訊程式設計 同一臺電腦上兩個py檔案通訊 檔案 兩台電腦 如何通訊?一根網線 多台電腦 如何通訊?交換機 更多台電腦 如何通訊?交換機 路由器 寫乙...

TCP UDP網路程式設計

什麼是計算機網路 網路通訊的兩個要素 ip位址 埠port 通訊協議 tcp實現聊天 tcp檔案上傳實現 初始tomcat udp訊息傳送 udp聊天實現 信件 tcp 連線 建立連線成功 打 udp 傳送了就完事兒 接收 發簡訊 想要達到通訊需要什麼 找到了這個主機,如何傳輸資料?協議 通訊雙方位...