UDP程序設計
在TCP的索引操作都必須建立可靠地連接,這樣一來肯定會浪費大量的系統性能,為了減少這種開銷,在網絡中又提供了另外一種傳輸協議---UDP,不可靠的連接,這種協議在各個聊天工具中被廣泛的應用。
在UDP開發中使用DatagramPacket包裝一條要發送的信息,之後使用DatagramSocket用於完成信息的發送操作。
例如:現在使用聊天工具進行聊天的功能,那麼A的發送的信息B不一定可以接受的到,因為使用的是UDP的協議。
UDP中主要是使用數據報協議發送的。
DatagramPacket中的方法
是包含真實的是要發送的信息,稱為數據報
所有的數據報使用DatagramPacket進行發送的操作
DatagramSocket
那麼如果要想運行程序,則在數據報的開發中,應該首先保證客戶端要打開
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) ; // 輸出內容
}
};
要進一步等待服務器發送信息
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() ;
}
};
UDP 屬於不可靠的連接協議,服務端發送的信息客戶端未必接收的到,采用的是數據報的協議發送。