首先所传对象必须是可序列化的
public class Data implements Serializable {
}
发送对象
DatagramSocket socket = new DatagramSocket();
//DatagramPacket(byte[] buf, int length, int length, InetAddress address, int port)
DatagramPacket packet = new DatagramPacket(new byte[0], 0, InetAddress.getByName("127.0.0.1"), 1688);
Data data = new Data();
//对象->对象流->字节数组流->字节数组
ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream();
ObjectOutputStream objectStream = new ObjectOutputStream(byteArrayStream);
objectStream.writeObject(data);
byte[] arr = byteArrayStream.toByteArray();
packet.setData(arr);//填充DatagramPacket
socket.send(packet);//发送
objectStream.close();
byteArrayStream.close();
接收对象
DatagramSocket socket = new DatagramSocket(1688);//监听端口号,1688
byte[] buff = new byte[1024];
DatagramPacket packet = new DatagramPacket(buff, buff.length);
socket.receive(packet);
ByteArrayInputStream byteArrayStram = new ByteArrayInputStream(buff);
ObjectInputStream objectStream = new ObjectInputStream(byteArrayStram);
Data data = (Data) objectStream.readObject();
objectStream.close();
byteArrayStram.close();