由于项目中还有其他程序,我是单独启动了一个线程来监听数据
java">public class TestUDPReceive implements Runnable{
// 创建数据包传输对象DatagramSocket绑定端口号
DatagramSocket ds;
//创建字节数据
byte[] data = new byte[1024];
// 创建数据包对象,传递字节数组
DatagramPacket dp;
public TestUDPReceive(int port){
try{
ds = new DatagramSocket(port);
dp = new DatagramPacket(data, data.length);
}catch (SocketException e) {
e.printStackTrace();
}
}
@Override
public void run() {
while (true) {
try {
ds.receive(dp);
//获取发送端的IP地址对象
String ip = dp.getAddress().getHostAddress();
int port = dp.getPort();
//获取接收到的字节个数
int length = dp.getLength();
for(int i = 0;i < length;i++){
System.out.print(data[i] + ",");
}
System.out.println();
System.out.println(ip + "-----------" + port + data.length);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
调用方法:
Thread thread = new Thread(new TestUDPReceive(8888));
thread.start();