Reputation: 27
Am new to Java Networking and am trying to deserialize a message sent over the network using datagramPacket. But am getting something different. Below is the code.
Code for Sending
public static void main(String[] args) {
try{
String host = "localhost";
InetAddress addr = InetAddress.getByName(host);
NewClass Details = new NewClass("Jay", 1);
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
ObjectOutputStream In = new ObjectOutputStream(buffer);
In.writeObject(Details);
In.flush();
byte[] Buf= buffer.toByteArray();
DatagramPacket packet = new DatagramPacket(Buf, Buf.length, addr, 7000);
DatagramSocket socket = new DatagramSocket(4000);
socket.send(packet);
}catch (Exception error){
error.printStackTrace();
}
}
Code for receiving
public static void main(String[] args) {
try {
DatagramSocket socket = new DatagramSocket(7000);
socket.setSoTimeout(0);
while (true) {
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
String message = new String(buffer);
System.out.println(message.trim());
}
} catch (Exception error) {
error.printStackTrace();
}
}
This is what get printed out
Upvotes: 0
Views: 155
Reputation: 38290
Use an ObjectInputStream
.
Check out the ObjectInputStream API Page.
Here is an Oracle Object Streams tutorial
Upvotes: 1