1.UDP网络编程
UDP:用户数据协议,无连接的通信协议(无虚拟连接),发送数据时不需要建立逻辑连接。一方发送给另外一方,不需要要确认接收方是否存在。接收方,收到数据后,也不会向发送方反馈。
特点:耗费资源比较小,通信效率高,多用于视频输出。例如:腾讯直播、钉钉课堂、微信会议等等,qq传送文件都是使用udp协议。
UDP编程,也是在Java的java.net包中。这些类是:
DatagramPacket——用于包装网络传输的数据,表示给谁发送,以及发送什么。
DatagrameSocket——用于代表网络终端(UPD不区分客户端和服务端),可以发送和接收数据。
2.UDP编程模式
第一个网络终端:
(1)建立网络终端
(2)创建数据
(3)发送数据
(4)关闭终端
第二个网络终端:
(1)建立网络终端
(2)接收数据
(3)解析数据
(4)关闭终端
3.UPD编程中发送数据
步骤:
(1)写信:地址和内容
(2)寄信
DatagramPacket类
构造方法:
new DatagramPacket(byte[] buf,int length)
buf为传输数据内容,length数据长度;
new DatagramPacket(byte[] buf,int length,InetAddress addr,int port)
buf为传输数据,length数据长度,addr是目标地址,port为目标端口号;
api:
setAddress(InetAddress addr);
setPortt(int port)
DatagramSocket类
构造方法:
new DatagramSocket();创建一个发送端的实例;
new DatagramSocket(int port);指定一个端口号创建一个实例。
new DatagramSocket(int port,InetAddress addr);指定ip地址和端口号创建一个实例。
api:
void receive(DatagramPacket pt);收到数据就放入pt中;
void send(DatagramPacket pt);发送pt给目标终端;
void close();关闭socket。
【案例】
UDPSender.java
MyTest.java
4.UDP编程接收数据
步骤:
(1)创建一个收件人(DatagramSocket)
(2)创建一个字节数据,用于接收数据报中内容
(3)创建一个数据报,用于接收数据
(4)使用收件人接收数据
(5)从数据报中还原数据
(6)关闭
【案例】
UDPReceiver.java
MyTest.java
测试:
(1)启动Sender
(2)启动Receiver
注意:
(1)接收端即使不存在,发送端一样可以发送
(2)发送端即使不存在,接收端也可以一样在等待,只需要发送端再开启,就可以再次接收。