1.UPD测试发送端代码
package udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPSearcher {
public static void main(String[] args) throws IOException {
System.out.println("UDPSearcher started");
//搜索放直接由系统指定
DatagramSocket datagramSocket=new DatagramSocket();
//发送一个数据
String sendData = "hello world";
byte[] requestDataBytes = sendData.getBytes();
//设置数据和发送地址端口
DatagramPacket requestPacket = new DatagramPacket(requestDataBytes,
requestDataBytes.length);
requestPacket.setAddress(InetAddress.getLocalHost());
requestPacket.setPort(20000);
//发送
datagramSocket.send(requestPacket);
//构建实体接受类
final byte[] buf=new byte[512];
DatagramPacket receivePackage = new DatagramPacket(buf, buf.length);
//接收
datagramSocket.receive(receivePackage);
//打印接收到的发送者的信息
String ip = receivePackage.getAddress().getHostAddress();
int port = receivePackage.getPort();
int dataLength = receivePackage.getLength();
String data = new String(receivePackage.getData(), 0, dataLength);
System.out.println("ip " + ip + ",port " + port + ",data " + data);
//发送一个数据
String responseData="receive data"+dataLength;
byte[] responseDataBytes=responseData.getBytes();
//原地址接口返回
DatagramPacket responsePacket=new DatagramPacket(responseDataBytes,
responseDataBytes.length,
receivePackage.getAddress(),
receivePackage.getPort());
datagramSocket.send(responsePacket);
System.out.println(" UDPSearcher close");
datagramSocket.close();
}
}
2.UDP接收端代码,接受端代码将接收到的字符串长度返回原接口,并不保证发送端接口可以接收到返回的数据
package udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPProvider {
public static void main(String[] args) throws IOException {
System.out.println("udpProvider started");
DatagramSocket datagramSocket=new DatagramSocket(20000);
//构建实体接受类
final byte[] buf=new byte[512];
DatagramPacket receivePackage = new DatagramPacket(buf, buf.length);
//接收
datagramSocket.receive(receivePackage);
//打印接收到的发送者的信息
String ip = receivePackage.getAddress().getHostAddress();
int port = receivePackage.getPort();
int dataLength = receivePackage.getLength();
String data = new String(receivePackage.getData(), 0, dataLength);
System.out.println("ip " + ip + ",port " + port + ",data " + data);
//发送一个数据
String responseData="receive data"+dataLength;
byte[] responseDataBytes=responseData.getBytes();
//原地址接口返回
DatagramPacket responsePacket=new DatagramPacket(responseDataBytes,
responseDataBytes.length,
receivePackage.getAddress(),
receivePackage.getPort());
datagramSocket.send(responsePacket);
System.out.println("close");
datagramSocket.close();
}
}
3.测试结果
发送端:
接收端