//创建发送端
public static void internateSend(){

DatagramSocket ds;
try {
ds = new Data gramSocket () ; //定义一个数据缓存
byte [] buf = "这是一个发送端口".getBytes();
//定义封装的数据包 dp中有四个参数 一个是数据缓存一 统计数据的大小。一是接收端的地址。另一个是接收端的端口号。
DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.1.8"), 1000);
//发送数据
ds.send(dp);
/ /关闭资源
ds.close();
} catch (SocketException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (UnknownHostException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace ();
}
}

?发送端关联
byte [] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
//接收数据
ds.receive( dp) ;

字符串 ip = dp.getAddress().getHostAddress();

字符串数据 = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();

System.out.println("ip:" + ip + " ,data:" + data + " ,port:" + port);
d.关闭 (); / TODO 自动生成的 catch 块
e.printStackTrace();
}
}

运行时,先打开接收端再发送,因为不打开接收端时会发送数据,但接收端不会收到。如果相关的饥饿端口被占用,关闭还是不行,那是因为你的内存中没有对应的端口。释放资源!