傳輸層TCP和UDP程式設計模型

2021-07-30 08:57:10 字數 2813 閱讀 3504

最近接觸了基於這個程式設計模型的程式設計,基礎程式設計再次熟悉了一下

一、tcp程式設計

伺服器端:

1、建立serversocket物件,繫結埠

2、通過accept()監聽客戶端請求

3、建立連線後,通過輸入輸出流進行讀寫操作

4、關閉相關資源

客戶端:

1、建立socket物件,指定服務端的位址和埠

2、通過輸入輸出流進行讀寫操作

3、關閉相關資源

server伺服器端;

system.out.println("服務端啟動");

serversocket server =new serversocket(44445);

socket socket=server.accept();

system.out.println(socket.getinetaddress().gethostaddress()+"連線到伺服器");

inputstream in=socket.getinputstream();//讀取客戶端資料的讀取流

fileoutputstream fos=new fileoutputstream("c:\\222.txt");//寫入檔案的位元組輸出流

outputstream out=socket.getoutputstream();//傳送「上傳成功」的位元組輸出流

byte arr=new byte[1024];//迴圈讀取客戶端寫入檔案

int len=0;

while((len=in.read(arr))!=-1)

fos.close();

out.write("上傳成功".getbytes());

socket.close();

client客戶端:

socket socket = new socket("localhost", 44445);

fileinputstream fis = new fileinputstream("c:\\1.txt");// 讀取本地的位元組讀取流

outputstream out = socket.getoutputstream();// 給伺服器端傳送資料的位元組輸出流

inputstream in = socket.getinputstream();// 讀取「上傳成功」的位元組讀取流

byte arr = new byte[1024];// 迴圈讀取本地檔案,傳送給伺服器

int len = 0;

while ((len = fis.read(arr)) != -1)

socket.shutdownoutput();// 向伺服器寫入結束標記

int num = in.read(arr); // 讀取「上傳成功」

system.out.println(new string(arr, 0, num));

fis.close();

socket.close();

二、udp程式設計

使用udp協議實現資料的接受和傳送--datagramsocket

伺服器端

1、建立socket,監聽埠

2、使用socket的接收功能接收資料

客戶端1、建立socket

2、要傳送的位元組資料並打包封裝為資料報包

3、使用socket傳送打包後的資料

server伺服器端接受資料

datagramsocket socket=new datagramsocket(11111);//建立socket埠,並監聽埠

byte arr=new byte[1024]; //建立空的資料報包接受資料

datagrampacket packet=new datagrampacket(arr,arr.length);

socket.receive(packet); //使用socket的接受功能接受資料

byte data=packet.getdata(); //獲取接收到的資料

string connect=new string(data,0,packet.getlength()); //解碼獲取內容

inetaddress address=packet.getaddress();

string ip=address.gethostaddress(); //獲取傳送資料方的主機名

int port=packet.getport(); //得到傳送方傳送資料使用的埠

system.out.println("收到了"+ip+": "+port+"內容:"+connect);

socket.close();

client客戶端傳送資料

datagramsocket socket =new datagramsocket();//建立socket端點

string ss="hello 你好";

byte data=ss.getbytes();//傳送的資料 //把傳送的資料封裝成資料報 資料,長度,主機位址,埠

datagrampacket packet=new datagrampacket(data,data.length,inetaddress.getbyname("192.168.1.101"),11111);

socket.send(packet); //傳送資料

socket.close();

Unix網路程式設計 傳輸層 TCP和UDP

第二章 傳輸層 tcp udp和sctp 1 使用者資料報協議 udp 1 描述 應用程式往乙個udp套接字寫入一條訊息,該訊息隨後被封裝到乙個udp資料報,又被封裝到乙個ip資料報,然後發往目的地 2 特點 缺乏可靠性 資料報到達目的地,但是檢驗和檢測有錯誤,或者該資料報在網路傳輸被丟棄,不會自動...

傳輸層協議TCP和UDP

tcp tcp允許乙個主機同時執行多個應用程序。每台主機可以擁有多個應用 埠,每對埠號 源和目標ip位址的組合唯一地標識了乙個會話。端 口分為知名埠和動態埠。有些網路服務會使用固定的埠,這類端 口稱為知名埠,埠號範圍為0 1023。如ftp http telnet snmp服務均使用知名埠。動態埠號...

傳輸層協議UDP和TCP

udp tcpudp是無連線的 udp提供不可靠服務 udp同時支援點到點和多點通訊 udp是面向報文的 udp首部8個位元組 tcp是面向連線的 tcp提供可靠服務 tcp只能進行點到點通訊 tcp是面向位元組流的 tcp首部20個位元組 連線建立 三次握手 注意 tcp報文首部syn和fin置位...