一、UDP通信原理
UDP協議是一種不可靠的網路協議,它在通信的兩頭各建立一個Socket物件,但這兩個Socket物件只是發送,接收資料的物件,
因此,對于基于UDP協議的通信雙方而言,沒有所謂的客戶端和服務器的概念
Java提供了DatagramSocket類作為基于UDP協議的Socket
二、UDP發送資料
發送資料的步驟:
1.創建發送端的Socket物件(DatagramSocket)
2.創建資料,并打包
DatagramPacket(byte[] buf, int length, InetAddress address, int port)構造用于發送長度的分組的資料報包length`指定主機上到指定的埠號
3.呼叫DatagramSocket物件的方法發送資料
send(DatagramPacket p) 從此套接字發送資料報包,
4.關閉發送端
UdpSendDemo:
/*實作簡單的UDP發送資料
1.創建發送端的Socket物件(DatagramSocket)
2.創建資料,并打包
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
構造用于發送長度的分組的資料報包 `length`指定主機上到指定的埠號
3.呼叫DatagramSocket物件的方法發送資料
send(DatagramPacket p) 從此套接字發送資料報包,
4.關閉發送端
* */
public class UdpSendDemo {
public static void main(String[] args) throws IOException {
//創建發送端的Socket物件(DatagramSocket)
DatagramSocket ds = null;
try {
ds=new DatagramSocket();
} catch (SocketException e) {
e.printStackTrace();
}
//創建資料,并打包
//DatagramPacket(byte[] buf, int length, InetAddress address, int port)
//構造用于發送長度的分組的資料報包 `length`指定主機上到指定的埠號
byte[] bytes ="再美不過姑娘你".getBytes();//資料陣列
// int length=bytes.length;//資料長度
// InetAddress address=InetAddress.getByName("cy");//指定的主機IP
// int port=10086;//指定的埠號
//呼叫DatagramSocket物件的方法發送資料
//send(DatagramPacket p) 從此套接字發送資料報包,
// DatagramPacket dp=new DatagramPacket(bytes,length,address,port);
//寫法二
DatagramPacket dp=new DatagramPacket(bytes,bytes.length,InetAddress.getByName("cy"),10086);
ds.send(dp);
//關閉發送端
ds.close();
}
}
三、UDP接收通信
步驟:
1.創建接收端的Socket物件(DatagramSocket)要系結指定的埠號
2.創建一個資料包,用于接收資料要注意資料包的長度
3.呼叫DatagramSocket物件的方法接收資料
4.決議資料包,并把資料在控制臺顯示
5.關閉接收端
UdpSendDemo
package Demo0420;
?
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
?
/*實作Udp簡單的接收資料
1.創建接收端的Socket物件(DatagramSocket)
2.創建一個資料包,用于接收資料
3.呼叫DatagramSocket物件的方法接收資料
4.決議資料包,并把資料在控制臺顯示
5.關閉接收端
* */
public class UdpReciveDemo {
public static void main(String[] args) throws IOException {
//創建接收端的Socket物件(DatagramSocket)
DatagramSocket ds=new DatagramSocket(10086);//系結指定的埠號
//創建一個資料包,用于接收資料
byte[] bytes=new byte[1024];
//呼叫DatagramSocket物件的方法接收資料
//創建接收端的DatagramPacket物件
DatagramPacket dp=new DatagramPacket(bytes,bytes.length);
ds.receive(dp);
//決議資料包,并把資料在控制臺顯示
//byte[] getData() 回傳資料緩沖區
byte[] datas = dp.getData();
//int getlength()回傳要發送的資料的長度或接收的資料的長度
int len=dp.getLength();
String s = new String(datas, 0, len);
System.out.println("資料時:"+s);
//關閉接收端
ds.close();
?
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/459546.html
標籤:其他
上一篇:Laravel使用GGuzzle報證書錯誤cURL error 60: SSL certificate problem: unable to get local issuer certificate
下一篇:Java案例——UDP通信程式
