private static byte[] serialize(Object msg) {
byte[] serializedMessage = null;
try {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bout);
out.writeObject(msg);
serializedMessage = bout.toByteArray();
} catch (java.io.IOException e2) {
System.out.println("Erro ao tentar serializar mensagem.");
System.exit(1);
}
return serializedMessage;
}
private static Object unserialize(byte[] msg) {
Object unSerializedMessage = null;
try {
ByteArrayInputStream bin = new ByteArrayInputStream(msg);
ObjectInputStream in = new ObjectInputStream(bin);
unSerializedMessage = (Object) in.readObject();
} catch (java.io.IOException e1) {
System.out.println("Erro na desserialização de uma mensagem.");
System.exit(1);
} catch (java.lang.ClassNotFoundException e2) {
System.out.println("Erro na desserialização: classe inexiste.");
System.exit(1);
}
return unSerializedMessage;
}
public class PacoteGeral implements Serializable {
//PacoteEnviado pacotes;
boolean hasWinner;
PacoteEnviado geral;
public PacoteGeral() {
// pacotes = new PacoteEnviado();
hasWinner=false;
}
}
public class PacoteEnviado implements Serializable {
int direcao;
boolean jump;
String Mensagem;
// depois eh so get e sets
// enviando
PacoteGeral geral= new PacoteGeral();
geral.geral= new PacoteEnviado();
geral.hasWinner=true;
//System.out.println("antes "+geral.pacotes.get(0).direcao +" " +geral.pacotes.get(1).direcao );
buf=serialize(geral);
InetAddress address = packet.getAddress();// esse packet eh recebido la em cima ...ta certo
int port = packet.getPort();
packet = new DatagramPacket(buf, buf.length, address, port);
socket.send(packet);
// recebendo
packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
Object o = unserialize(packet.getData());
PacoteGeral geral = (PacoteGeral) o;
System.out.println(geral.hasWinner );
Espero ajuda