JAVA網路程式設計UDP與TCP與多執行緒

2021-09-24 11:50:43 字數 1458 閱讀 2238

網際網路三大基石:

1 協議

2 htlm

3 url

多執行緒:多個任務同時執行

程序:乙個任務就是乙個程序,對於作業系統而言,就是不同的任務執行同時執行,每乙個程序都有自己的**塊和執行空間,對於同步鎖線程而言,對cpu消耗比較大,乙個程序包含多個執行緒.

執行緒:執行緒之間消耗比較小,一系列執行緒可以共享**塊和執行空間,執行緒是cpu排程的最小單位.

多執行緒的開啟方式:

1 繼承thread類,重寫run();方法

2 實現runable介面,重寫run():方法

3 實現callable介面,重寫call();方法

二十三種模式:生產者消費者模式

執行緒通訊:wait和 notify和notifyall() 只能在同步環境下使用,否則則會出現異常:illegalmonitorstateexception

wait():使執行緒進入等待序列,釋放物件鎖,讓出cpu的資源

notify和notifyall():喚醒對方處於等待序列的執行緒,具有可執行的能力,並且要獲取物件的鎖和cpu的資源才能執行,如果被喚醒的執行緒沒有獲取物件鎖無法執行

udp實現接收端:基本流程

1.datagramsocket 指定埠號 定義接收端

寫法:datagramsocket rec=new datagramsocket(埠號);

2.準備位元組陣列,進行打包(用來接收資料,把資料接收到包裹裡面的位元組資料中)

寫法:byte arr=new byte[1024n]; 這裡的位元組容量要設定成1024的整數倍 位元組陣列的寫法也可以寫成 byte arr =new byte[1024n];

3.打包

寫法:datagrampacket packet=new datagrampacket(arr,0,arr.length); 將第二部的這個位元組陣列容量已引數的方式傳入下面這個物件new datagrampacket 然後將這個物件賦值給datagrampacket packet這個引用,至於(arr,0,arr.length)這個裡面的引數,其中arr 是我們上面第二部裡面我們準備的位元組陣列,這裡作為引數傳遞給了new datagrampacket 這個物件,而0,arr.length這裡只指從這個位元組陣列的下標為零的元素到這個位元組陣列全部的元素,我們這裡的length是表示我們獲取的是這個陣列的長度,那麼這個長度裡面包含的元素是可以變的,要是我們要獲取乙個定長陣列的所有元素就要

length-1;

4 接收:阻塞式接收

5 處理資料

byte getdata()

返回資料緩衝區

int getlength()

返回將要傳送或接收到的資料的長度

system.out.println(newarr.length); //位元組陣列的長度

system.out.println(packet.getlength()); //接到資料的個數

6 關閉:rec.close();

網路程式設計 TCP與UDP

tcp transmission control protocol 傳輸控制協議 是一種面向連線的 可靠的 基於位元組流的傳輸層通訊協議,由ietf的rfc 793定義。當客戶和伺服器彼此交換資料前,必須先在雙方之間建立乙個tcp連線,之後才能傳輸資料。tcp提供超時重發,丟棄重複資料,檢驗資料,流...

python網路程式設計 TCP與UDP

tcp與udp的區別 tcp速度慢,穩定。udp速度快,不穩定,易丟資料。udp 客戶端 import socket clientsocket socket.socket socket.af inet,socket.sock dgram 建立套接字 sendtoaddr 192.168.1.111 ...

java網路通訊TCP與UDP

system.out.println 客戶端啟動 socket socket new socket 192.168.0.33 8080 outputstream os socket.getoutputstream 會的輸出流 outputstreamwriter osw new outputstre...