Pessoal, estou com problemas para reconhecer objetos recebidos com NIO, pra enviar ao client(o client usa socket normal e não NIO) tá tranquilo, mas o client envia um objeto e o server recebe como array de bytes certinho, mas não consegue converter pra object, abaixo o trecho do codigo no server para receber o objeto:
SocketChannel sc =(SocketChannel) k.channel();
ByteBuffer buffer = ByteBuffer.allocate(1024);
try
{
buffer.clear();
int nbyte = sc.read(buffer);
if(nbyte == -1)
{
}
if (nbyte > 0)
{
buffer.flip();
byte[] tdata = new byte[nbyte];
buffer.get(tdata,0,nbyte);
ByteArrayInputStream buf = new ByteArrayInputStream(tdata);
ObjectInputStream in = new ObjectInputStream(buf);
//NA LINHA ABAIXO DA ERRO
Mensagem m = (Mensagem) in.readObject();
System.out.print(m);
}
}
Abaixo o trecho que envia o objeto no client:
public static void enviaComando(Mensagem mensagem,Socket s) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out;
try {
if(s!=null){
out = new ObjectOutputStream(bos);
byte[] b = bos.toByteArray();
out = new ObjectOutputStream(s.getOutputStream());
out.writeObject(mensagem);
out.flush();
}else{
}
} catch (IOException ex) {
}
}
Qualquer ajuda é bem vinda.
Valeu.