写一个回应服务器
到目前为止,我们已经消耗了数据没有发出回应。
一个服务器,尽管如此,通常假设为对一个请求作出响应。
让我们学习如何写一个响应消息给客户端通过实现一个ECHO协议。
任何接收到的数据将被发回。
这仅仅的区别就是我们已经实现了发回接收到的数据而不是打印它到控制台上。
因此,只需要再次修改channelRead()方法就行了。
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
ctx.write(msg); // (1)
ctx.flush(); // (2)
}
一个ChannelHandlerContext对象提供了各种操作(让你来触发各种IO事件和操作。)
这里,我们触发了write(Object)来逐字逐句写入接收到的消息。
注意:我们没有释放接收到的消息不像之前。
这是因为netty为我们释放了当它被写出到wire时。
ctx.write(Object) 没有让消息写出到wire, 只是做了内部的缓冲,通过ctx.flush()才写到wire里。
相应的,你可以调用ctx.writeAndFlush(msg) 来实现简洁性.
如果你运行telnet命令行,你将看到服务器返回你发送的内容。
翻译 | ok | ok | ok |
理解 | ok | ok | ok |