UDP程序設(shè)計(jì)
在TCP的索引操作都必須建立可靠地連接,這樣一來(lái)肯定會(huì)浪費(fèi)大量的系統(tǒng)性能,為了減少這種開銷,在網(wǎng)絡(luò)中又提供了另外一種傳輸協(xié)議---UDP,不可靠的連接,這種協(xié)議在各個(gè)聊天工具中被廣泛的應(yīng)用。
咋UDP開發(fā)中使用DatagramPacket包裝一條要發(fā)送的信息,之后使用DatagramSocket用于完成信息的發(fā)送操作。
例如:現(xiàn)在使用聊天工具進(jìn)行聊天的功能,那么A的發(fā)送的信息B不一定可以接受的到,因?yàn)槭褂玫氖荱DP的協(xié)議。
UDP中主要是使用數(shù)據(jù)報(bào)協(xié)議發(fā)送的。
DatagramPacket中的方法

是包含真實(shí)的是要發(fā)送的信息,稱為數(shù)據(jù)報(bào)
所有的數(shù)據(jù)報(bào)使用DatagramPacket進(jìn)行發(fā)送的操作
DatagramSocket

那么如果要想運(yùn)行程序,則在數(shù)據(jù)報(bào)的開發(fā)中,應(yīng)該首先保證客戶端要打開
import java.net.DatagramPacket ;import java.net.DatagramSocket ;public class UDPClient{ public static void main(String args[]) throws Exception{ // 所有異常拋出 DatagramSocket ds = null ; // 定義接收數(shù)據(jù)報(bào)的對(duì)象 byte[] buf = new byte[1024] ; // 開辟空間,以接收數(shù)據(jù) DatagramPacket dp = null ; // 聲明DatagramPacket對(duì)象 ds = new DatagramSocket(9000) ; // 客戶端在9000端口上等待服務(wù)器發(fā)送信息 dp = new DatagramPacket(buf,1024) ; // 所有的信息使用buf保存 ds.receive(dp) ; // 接收數(shù)據(jù) String str = new String(dp.getData(),0,dp.getLength()) + "from " + dp.getAddress().getHostAddress() + ":" + dp.getPort() ; System.out.PRintln(str) ; // 輸出內(nèi)容 }};要進(jìn)一步等待服務(wù)器發(fā)送信息
import java.net.DatagramPacket ;import java.net.DatagramSocket ;import java.net.InetAddress ;public class UDPServer{ public static void main(String args[]) throws Exception{ // 所有異常拋出 DatagramSocket ds = null ; // 定義發(fā)送數(shù)據(jù)報(bào)的對(duì)象 DatagramPacket dp = null ; // 聲明DatagramPacket對(duì)象 ds = new DatagramSocket(3000) ; // 服務(wù)端在3000端口上等待服務(wù)器發(fā)送信息/ String str = "hello World!!!" ; dp = new DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("localhost"),9000) ; // 所有的信息使用buf保存 System.out.println("發(fā)送信息。") ; ds.send(dp); // 發(fā)送信息出去 ds.close() ; }};UDP 屬于不可靠的連接協(xié)議,服務(wù)端發(fā)送的信息客戶端未必接收的到,采用的是數(shù)據(jù)報(bào)的協(xié)議發(fā)送。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注