public class shapeInfo { int x; int y; int z; int t; Color shapeColor; int shapeType; }
static ArrayList<shapeInfo> shapeStack = new ArrayList<>();
How can I send elements of this ArrayList
over a socket from a client to a server? I tried some structures but all needed one String
to send.
Advertisement
Answer
The easiest way is to use object streams.
In order to do this, shapeInfo
should be Serializable
:
public class ShapeInfo implements Serializable{ int x; int y; int z; int t; Color shapeColor; int shapeType; }
Then, you can send it using an ObjectOutputStream
:
Socket socket;//your socket try(ObjectOutputStream oos=new ObjectOutputStream(socket.getOutputStream())){ oos.writeObject(shapeStack); }
On the other side, you can receive it:
Socket socket;//your socket try(ObjectInputStream oos=new ObjectInputStream(socket.getInputStream())){ shapeStack=(ArrayList<ShapeInfo>)oos.readObject(); }
If you don’t want to implement Serializable
or don’t want to use object streams, you can also sequentially send all attributes in the ArrayList
of all objects using DataInputStream
/DataOutputStream
s.
Notes
Note that class names should be written PascalCase by convention.
You should also need to handle IOExceptions
.
I did not initialize the socket connection in my example. You need to use an initialized socket connection for it to work.
You should use buffered streams for a better performance.
Variables in objects should be private
and accessible using getters/setters.