2016-11-22 4 views
2

Когда я прочитал ответ на сервере, я получаю правильный объект, но когда я пытаюсь бросить его в пакет, я получил это исключение:Я не могу бросить свой объект после отправки его с Нетти

java.lang.ClassCastException: java.lang.String cannot be cast to server.Packet 
    at server.JCoincheServerHandler.channelRead(JCoincheServerHandler.java:21) 

Это мой пакет класс:

public class Packet implements Serializable 
{ 
    public int code; 
    int intData; 
    String data; 
    String user; 
} 

Это, как я отправить его в моем клиенте: не Передающий успешно, «сбой передачи» не печатается

public void sendMessage(Object object) 
    { 
     ChannelFuture cf = _chan.write(object); 
     _chan.flush(); 
     if (!cf.isSuccess()) { 
      System.out.println("Send failed: " + cf.cause()); 
     } 
} 

Это, как я прочитал это в моем сервере:

@Override 
    public void channelRead(ChannelHandlerContext ctx, Object msg) { 
     Packet packet = (Packet) msg; 
     System.out.println(packet.data); 
     System.out.println("Message received"); 
    } 

Что я сделал не так?

EDIT:

p.addLast(
      new ObjectEncoder(), 
      new ObjectDecoder(ClassResolvers.cacheDisabled(null)), 
      handler); 
+0

Как выглядят ваши трубопроводы? Нужно знать, какие обработчики добавляются и в каком порядке –

+0

@ ChrisO'Toole Я отредактировал мое сообщение –

+1

Возможно ли, что вы отправляете строку вместо пакета? –

ответ

1

Ваш клиент должен посылать строку.

Также убедитесь, что ваш клиент и сервер совместно используют пакетный пакет, и этот класс должен находиться в одном пакете.

Например, common.Packet

 Смежные вопросы

  • Нет связанных вопросов^_^