用netty发送后我无法投射我的物体

时间:2016-11-22 10:08:12

标签: java networking netty

当我在服务器中读取响应时,我得到正确的对象但是当我尝试将其转换为Packet时,我得到了这个例外:

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);

1 个答案:

答案 0 :(得分:1)

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

同时验证您的客户端和服务器是否共享Packet类,此类应该在同一个数据包中。

例如common.Packet