【发布时间】:2017-03-17 20:08:05
【问题描述】:
我是 Netty 的新手,打算创建一个 tcp 套接字服务器,它读取每个客户端的信息并在立即处理请求之前回复客户端,即当消息进入 ChannelInboundHandlerAdapter 类的重写 channelRead 方法时,是一种对客户端的确认。
请指导我实现上述指定目标。 我目前正在尝试基本的 netty 4.1.4 回显服务器示例,但是我希望服务器向客户端发送回确认,所以我更新了 channelread 方法如下:
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
ctx.write(msg);
ChannelFuture cf = ctx.channel().write("FROM SERVER");
System.out.println("Channelfuture is "+cf);
}
得到的输出如下:
Channelfuture is DefaultChannelPromise@3f4ee9dd(failure: java.lang.UnsupportedOperationException: unsupported message type: String (expected: ByteBuf, FileRegion))
我了解它期望 bytebuf 的错误,但我该如何实现呢?另外,这个方法是否能够向客户端发送确认
【问题讨论】:
-
您需要使用 Netty 3,还是可以选择 4?建议查看并使用示例。 github.com/netty/netty/tree/4.1/example/src/main/java/io/netty/…
-
嗨,我只需要一个更稳定的版本,所以选择了 netty 3。如果版本 4 的任何更新是稳定的,我会在需要时选择它。我确实看过一些例子并且能够理解一些事情。但是,我被这个简单的事情困住了。
-
我对 3 不熟悉,但如果你在 4 中尝试一下,我可能会有所帮助。根据来自 Netty 项目的 Trustin 的说法,4.0 是稳定的,而 3.x 已被弃用:stackoverflow.com/questions/30457648/…
-
我认为现在有必要改变我的问题。