一、原理及意义
在本文中主要介绍使用多线程的方式,实现UDP的通信方式,消息提供端负责向指定端口发送消息,消息搜索端负责监听指定端口的消息,并将监听到信息,通过DatagramSocket类将消息广播出去.消息提供端则可以根据MessageCreator指定的协议接收到在局域网内的广播信息.
其主要意义是演示多线程融合UDP的一种消息互通的方式.
二、demo的流程图和顺序图
(1) 流程图
(2)顺序图
三、代码实现
(1) 公共类 MessageCreator
package socket.SocketDemo2;
/**
* Created by lifuqing on 2019/4/8 15:26
* Email : daqing.lee@hotmail.com
*/
public class MessageCreator {
private static final String SN_HEADER = "收到暗号,我是(SN):";
private static final String PORT_HEADER = "这是暗号,请回电端口(Port):";
public static String buildWithPort(int port) {
return PORT_HEADER + port;
}
public static int parsePort(String data) {
if (data.startsWith(PORT_HEADER)) {
return Integer.parseInt(data.substring(PORT_HEADER.length()));
}
return -1;
}
public static String buildWithSn(String sn) {
return SN_HEADER + sn;
}
public static String parseSn(String data) {
if (data.startsWith(SN_HEADER)) {
return data.substring(SN_HEADER.length());
}
return null;
}
}
(2) 消息提供者 UDPProvider
package socket.SocketDemo2;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.util.UUID;
/**
* Created by lifuqing on 2019/4/8 15:25
* Email : daqing.lee@hotmail.com
*/
public class UDPProvider {
public static void main(String[] args) throws IOException {
// 生成一份唯一标示
String sn = UUID.randomUUID().toString();
Provider provider &