2016-11-22 52 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"); 
    } 

我做了什么错?

编辑:

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

你的管道是什么样的?需要知道哪些处理程序正在添加以及以何种顺序 –

+0

@ ChrisO'Toole我编辑了我的文章 –

+1

您是否可能发送字符串而不是数据包? –

回答

1

您的客户端必须在发送的字符串。

还要验证您的客户端和服务器共享类Packet,并且此类应该位于同一个数据包中。

例如common.Packet