UDP协议是传输层协议,它是无连接,不保证可靠的传输层协议。那么如果要进行发送端和接收端的通讯应该如何进行?
两个基本概念:
1.Socket 套接字
- Socket就是为网络服务提供的一种机制
- 网络通信其实就是Socket间的通信
- (网络想要进行通信需要两个端点)数据在两个Socket间通过IO传输
2.UDP传输(Java中建立了一些对象对UDP进行封装,方便我们进行操作)
- DatagramSocket 此类用来发送和接收数据报包的套接字
- DatagramPacket 此类表示数据报包,数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证,因此是不可靠的。(构造参数中带有地址信息的DatagramPacket对象是用来发送数据报包的)
UDP协议-发送端
创建UDP传输的发送端
(1)建立UDP的Socket服务
(2)将要发送的数据封装到数据包中
(3)通过UDP的Socket服务将数据包发送出去
(4)关闭Socket服务
public class UDPSendDemo {
public static void main(String[] args) throws IOException {
System.out.println("发送端启动");
//1.udpsocket服务,使用DatagramSocket对象
DatagramSocket ds = new DatagramSocket();
//2.将要发送的数据装到数据包中
String str = "udp传输演示";
//使用DatagramPacket将数据封装到该对象包中
byte[] buf = str.getBytes();
/*
构造方法:
DatagramPocket(byte[] buf,int length,InetAddress address,int port):
构造数据包,用来将长度为length的包发送到指定主机上的指定端口号。
端口号在0-65535之间即可,尽量避免0-1024,避免与系统冲突
*/
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),10000);//10000为目的端口号
//3.通过UDP的Socket服务,将数据包发送出去
ds.send(dp);
ds.close();
}
}