【发布时间】:2017-04-07 19:22:55
【问题描述】:
我正在构建一个 tcp 客户端来接收和发送消息。
我按照Netty user guide 上的步骤编写了一个简单的tcp 客户端,它带有一个扩展ChannelInboundHandlerAdapter 的自定义处理程序。
在hander中我存储了ChannelHandlerContext:
@Override
public void channelActive (ChannelHandlerContext ctx) throws Exception {
super.channelActive (ctx);
this.ctx = ctx;
}
然后我有一个使用ChannelHandlerContext 发送消息的发送方法:
public void sendMessage (String msg) {
if (ctx == null) {
return;
}
ChannelFuture cf = ctx.write (Unpooled.copiedBuffer (msg, CharsetUtil.UTF_8));
ctx.flush ();
}
我发现的另一个选项是在您的客户端类中使用 Channel 对象
channel.writeAndFlush (msg);
我需要从不同的线程调用发送方法。 最好的方法是什么?
提前致谢。
【问题讨论】:
-
“我需要从不同的线程调用 send 方法,所以它需要异步工作。”这不一定是后果。你能详细说明预期的工作流程吗?
-
@davidxxx 你是对的。它不必异步工作。我唯一要做的就是从不同的线程调用 send 方法。