接收者
//完成System.out.println("UDPProvider Started.");
//作为接收者,指定一个端口用于数据接收
DatagramSocket ds = new DatagramSocket(20000);
//构建接收实体
final byte[] buf = new byte[512];
DatagramPacket receivePack = new DatagramPacket(buf,buf.length);
//接收
ds.receive(receivePack);
//打印接收到的信息与发送者的信息
//发送端IP地址
String ip = receivePack.getAddress().getHostAddress();
int port = receivePack.getPort();
int dataLen = receivePack.getLength();
String data = new String(receivePack.getData(),0,dataLen);
System.out.println("UDPProvider receive form ip:"+ip+"\tport:"+port
+"\tdata:"+data);
//构建一份回送数据
String responseData = "Receive data with len:" + dataLen;
byte[] responseDataBytes = responseData.getBytes();
//直接根据发送者构建一份回送信息
DatagramPacket responsePacket = new DatagramPacket(responseDataBytes,
responseDataBytes.length,receivePack.getAddress(),receivePack.getPort());
ds.send(responsePacket);
//完成
System.out.println("UDPProvider Started.");
ds.close();
搜索者
System.out.println("UDPSearcher Started.");
//作为搜索方,让系统自动分配端口
DatagramSocket ds = new DatagramSocket();
//构建一份请求数据
String requestData = "hello world:";
byte[] requestDataBytes = requestData.getBytes();
//直接构建packet
DatagramPacket requestPacket = new DatagramPacket(requestDataBytes,
requestDataBytes.length);
requestPacket.setAddress(InetAddress.getLocalHost());
requestPacket.setPort(20000);
//发送
ds.send(requestPacket);
//构建接收实体
final byte[] buf = new byte[512];
DatagramPacket receivePack = new DatagramPacket(buf,buf.length);
//接收
ds.receive(receivePack);
//打印接收到的信息与发送者的信息
//发送端IP地址
String ip = receivePack.getAddress().getHostAddress();
int port = receivePack.getPort();
int dataLen = receivePack.getLength();
String data = new String(receivePack.getData(),0,dataLen);
System.out.println("UDPSearcher receive form ip:"+ip+"\tport:"+port
+"\tdata:"+data);
//完成
System.out.println("UDPSearcher Started.");
ds.close();