JAVA筆記:Java網路編程(四)UDP程式設計,網路編程udp
在TCP協議中所有的操作都必須建立可靠的串連,對於系統資源的消耗很大,為了減少這種開銷,在網路中又提供了另外一種傳輸協議:
UDP協議,不可靠的串連,在各個聊天工具中被廣泛使用。
在UDP開發中使用DatagramPacket封裝一條要發送的資訊,之後使用DatagramSocket用於完成資訊的發送。
UDP中主要是使用資料報協議發送的。
DatagramPacket主要方法:
包含真實的要發送的資訊,稱為資料報。
所有的資料報使用DatagramSocket完成資料的發送。
執行個體:
伺服器端:
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 ;// 定義發送資料報的對象DatagramPacket dp = null ;// 聲明DatagramPacket對象ds = new DatagramSocket(3000) ;// 服務端在3000連接埠上等待伺服器發送資訊\String str = "hello World!!!" ;dp = new DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("localhost"),9000) ; // 所有的資訊使用buf儲存System.out.println("發送資訊。") ;ds.send(dp);// 發送資訊出去ds.close() ;}};
用戶端:
import java.net.DatagramPacket ;import java.net.DatagramSocket ;public class UDPClient{public static void main(String args[]) throws Exception{// 所有異常拋出DatagramSocket ds = null ;// 定義接收資料報的對象byte[] buf = new byte[1024] ;// 開闢空間,以接收資料DatagramPacket dp = null ;// 聲明DatagramPacket對象ds = new DatagramSocket(9000) ;// 用戶端在9000連接埠上等待伺服器發送資訊dp = new DatagramPacket(buf,1024) ; // 所有的資訊使用buf儲存ds.receive(dp) ;// 接收資料String str = new String(dp.getData(),0,dp.getLength()) + "from " + dp.getAddress().getHostAddress() + ":" + dp.getPort() ;System.out.println(str) ;// 輸出內容}};