How can I send objects across the network using sockets?
Created May 4, 2012
Tim Rohaly
Objects that implement Serializable may be sent across a socket connection using an ObjectInputStream and ObjectOutputStream combination.
Here are the steps to follow:
- First, define an object to send. As an example, we can define a class called Message to encapsulate our communications:
public class Message implements Serializable { private int senderID; private String messageText; public Message(int id, String text) { senderID = id; messageText = text; } public String getText() { return messageText; } }
- Next, instantiate the object, wrap the socket's streams in object streams, then send the message across the socket:
Message sayhey = new Message("123456789", "Hello"); Socket socket = new Socket(host, port); ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream()); out.writeObject(sayhey);
- On the other side of the socket, the message can be retrieved and used by invoking methods on the returned object:
ObjectInputStream in = new ObjectInputStream(socket.getInputStream()); Message messageObject = (Message) in.readObject(); String messageText = messageObject.getText();