gpt4 book ai didi

java - 用 netty 发送后我无法转换我的对象

转载 作者:行者123 更新时间:2023-11-30 10:36:08 26 4
gpt4 key购买 nike

当我读取服务器中的响应时,我得到了正确的对象,但是当我尝试将它转换为 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);

最佳答案

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

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

例如common.Packet

关于java - 用 netty 发送后我无法转换我的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40738981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com