DatagramSocket - envio de objeto

3 respostas
C

Bom dia colegas,

Aqui venho eu mais uma vez com minhas dúvidas a respeito de DatagramSocket. Existe a possibilidade de enviar um Array de objetos através do método send() desse tipo de socket?

Preciso que seja através de DatagramSocket pois devo simular mais tarde uma entrega errada de pacotes.

Alguém pode me ajudar?

Obrigado mesmo!

3 Respostas

E

Como já disse antes, por um datagrama você pode trafegar apenas 1400 a 1500 bytes no máximo, dependendo do MTU da sua rede. (Tipicamente em uma rede Ethernet, o MTU é por volta de 1500 e em uma VPN o MTU é por volta de 1400).

Se seu array de objetos, uma vez serializado, couber em um datagrama, esteja à vontade. Entretanto, desconfio que você venha a ter problemas.

C

E como eu transformo esse objeto em bytes para poder enviá-lo pelo método send?

Obrigado pela ajuda entanglement!

E

Bom, lá vai:

//
// Criando o objeto
//
// não se esqueça de implementar Serializable!
class MinhaClasse implements Serializable {
...
};
...
ByteArrayOutputStream baos = null;
ObjectOutputStream oos = null;
byte[] bytes = null;
MinhaClasse obj = ...;
try {
    baos = new ByteArrayOutputStream();
    oos = new ObjectOutputStream (baos);
    oos.writeObject (obj);
} finally {
    oos.close();
}
bytes = baos.toByteArray();
...
//
// Recuperando o objeto
//
MinhaClasse objRemoto = ...;
byte[] bytes = .... obtido de uma mensagem ...;
ByteArrayInputStream bais = new ByteArrayInputStream (bytes);
ObjectInputStream ois = new ObjectInputStream (bais);
objRemoto = (MinhaClasse) ois.readObject();
...
Criado 17 de novembro de 2009
Ultima resposta 17 de nov. de 2009
Respostas 3
Participantes 2