首先所传对象必须是可序列化的
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();
本文详细介绍了Java中使用DatagramSocket进行网络通信的方法,包括如何将对象序列化为字节流,以及如何从字节流反序列化回对象。通过实例演示了发送和接收对象的过程。
795

被折叠的 条评论
为什么被折叠?



