UDP: User Datagram Protocol的簡稱, 中文名是用戶數(shù)據(jù)包協(xié)議,是 OSI 參考模型中一種無連接的傳輸層協(xié)議,提供面向事務的簡單不可靠信息傳送服務。
特點:每個數(shù)據(jù)報中都給出了完整的地址信息,因此無需要建立發(fā)送方和接收方的連接。
UDP傳輸數(shù)據(jù)時是有大小限制的,每個被傳輸?shù)臄?shù)據(jù)報必須限定在64KB之內(nèi)。
UDP是一個不可靠的協(xié)議,發(fā)送方所發(fā)送的數(shù)據(jù)報并不一定以相同的次序到達接收方。
udp socket實現(xiàn)數(shù)據(jù)傳輸socket編程實現(xiàn)UDP數(shù)據(jù)傳輸基于DatagramSocket與DatagramPacketAPI實現(xiàn)。
?。踛ava] view plain copy
?。踛ava] view plain copyimport java.io.IOExcepTIon;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
* 客戶端發(fā)送數(shù)據(jù)
*/
public class UdpClient {
public staTIc void main(String[] args) throws IOExcepTIon {
// 1.定義服務器的地址、端口號、數(shù)據(jù)
byte[] data = “udpclient發(fā)送數(shù)據(jù)”.getBytes();
InetAddress address = InetAddress.getByName(“localhost”);
int port = 8086;
// 2.創(chuàng)建數(shù)據(jù)報,包含發(fā)送的數(shù)據(jù)信息
DatagramPacket packet = new DatagramPacket(data, data.length, address,port);
// 3.創(chuàng)建DatagramSocket對象
DatagramSocket socket = new DatagramSocket();
// 4.向服務器端發(fā)送數(shù)據(jù)報
socket.send(packet);
socket.close();
}
}
[java] view plain copyimport java.io.IOExcepTIon;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/**
*服務器接收數(shù)據(jù)
*/
public class UdpServer {
public static void main(String[] args) throws IOException {
DatagramSocket socket = new DatagramSocket(8086);
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length);
socket.receive(packet);
String info = new String(data, 0, packet.getLength());
System.out.println(“udpservice接收數(shù)據(jù)是” + info);
socket.close();
}
}