UDP:不是面向連接配接的協定,它是以資料為中興的協定,它的特點:資料的可靠性較差,資料容易丢失,但是它的效率高
一、類DatagramSocket DatagramPacket
用戶端
1、建立用戶端使用 DatagramSocket 類 + 端口 (指定:我的資料從那個端口出去).
2、準備資料 隻不過這些資料需要裝配到位元組數組中去.
3、将資料打包使用 DatagramPacket + 伺服器位址及端口号 來完成打包.
4、發送.
5、釋放資源.
伺服器端
1、建立伺服器端使用 DatagramSocket 類 + 端口 (指定:我從那個端口獲得資料).
2、準備接收資料 同樣需要定義一個位元組數組 封裝 DataGramPacket .
3、接收資料.
4、分析資料.
5、釋放資源.
例:模拟
public static void main(String[] args) {
//建立用戶端使用 DatagramSocket 類 + 端口 (指定:我的資料從那個端口出去)
DatagramSocket client = null;
DatagramPacket packet = null;
// 準備數組.
byte[] data = null;
try {
client = new DatagramSocket(8888);
//準備資料 隻不過這些資料需要裝配到位元組數組中去.
String msg = "XXXXXXXXXXX";
data = msg.getBytes();
//将資料打包使用 DatagramPacket + 伺服器位址及端口号 來完成打包.
packet = new DatagramPacket(data, data.length,new InetSocketAddress("127.0.0.1",8888));
//發送
client.send(packet);
//釋放資源.
client.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//建立伺服器端使用 DatagramSocket 類 + 端口 (指定:我從那個端口獲得資料).
DatagramSocket server = null;
DatagramPacket packet = null;
try {
server = new DatagramSocket(8888);
//準備接收資料 同樣需要定義一個位元組數組 封裝 DataGramPacket .
byte[] data = new byte[1024];
packet = new DatagramPacket(data, data.length);
//接收資料.
server.receive(packet);//阻塞方法
//分析資料.
byte[] data01 = packet.getData(); // 獲得用戶端傳輸的真實資料
System.out.println(new String(data));
//釋放資源.
server.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}