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.
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
capitao
E como eu transformo esse objeto em bytes para poder enviá-lo pelo método send?
Obrigado pela ajuda entanglement!
E
entanglement
Bom, lá vai:
//// Criando o objeto//// não se esqueça de implementar Serializable!classMinhaClasseimplementsSerializable{...};...ByteArrayOutputStreambaos=null;ObjectOutputStreamoos=null;byte[]bytes=null;MinhaClasseobj=...;try{baos=newByteArrayOutputStream();oos=newObjectOutputStream(baos);oos.writeObject(obj);}finally{oos.close();}bytes=baos.toByteArray();...//// Recuperando o objeto//MinhaClasseobjRemoto=...;byte[]bytes=....obtidodeumamensagem...;ByteArrayInputStreambais=newByteArrayInputStream(bytes);ObjectInputStreamois=newObjectInputStream(bais);objRemoto=(MinhaClasse)ois.readObject();...