想知道是不是一样(在my handler . message received(channelhandler context CTX,object msg)中调用它们)。
如果是相同的,我可以执行以下操作吗
1)将通道添加到哈希图
@Override
protected void messageReceived(ChannelHandlerContext ctx, ByteBuf msg) throws Exception {
//In this handler we add the client to a hashmap
short id = msg.readShort();
AllClients.addClient(id, ctx.channel());
}
2)在另一个客户端的其他处理程序中,向最后一个客户端发送消息:
protected void messageReceived(ChannelHandlerContext ctx, Message msg) throws Exception {
//In this handler we send a message to other client
short id = msg.readShort();
AllClients.getClient(id)
.getChannel()
.WriteAndFlush(id + "->" + Message.readString());
}
对不起,如果我表达得不好,我不是英国人。感谢您的帮助:)
区别在于,ctx.write(…)将在上下文上启动写入,这意味着只有前面的ChannelOutboundHandler才会看到写入,而channel.write(..)将在ChannelPipeline的尾部开始,因此所有ChanneloutboundHangler都会看到写入。你最有可能使用前者。
问题内容: 我注意到ctx在处理程序之间是不同的,即使这些处理程序位于同一管道中,例如 在MyHander1中 在MyHandler2中 和输出: 我注意到ctx不同,但频道相同 所以在调用ctx.write()和ctx.channel()。write()之间有什么区别吗? 问题答案: 是的,有… Channel.write(..)始终从ChannelPipeline的尾部开始,因此通过所有Cha
我注意到ctx在处理程序之间是不同的,即使这些处理程序在相同的管道中,例如 在MyHander1中 那么调用ctx.write()和ctx.channel().write()有什么区别吗?
我需要让客户能够建立许多连接。我使用Netty 4.0。不幸的是,所有现有的示例都没有显示如何创建大量连接。 这是正确的决定吗?还是会更好?
我刚刚把我的Netty 3软件转换成5,我遇到了一个问题。只有一个客户,一切都很好。我可以使用两个解码器(它们可以正常切换)并允许我登录。 当我尝试连接另一个客户端时,无论第一个客户端是否仍然连接,都会出现问题。第一个客户端保持连接绝对正常,但第二个客户端根本无法连接(不通过第一个解码器)。 这是我的引导程序: 第一解码器: http://pastebin.com/9FWzXSVE 第二个解码器:
我正在努力与Netty 4.0.8网络套接字客户端示例和SSL,我似乎无法将数据发送到Netty SSL网络套接字服务器示例。尽管围绕这个问题已经有很多帖子了,(我相信我已经浏览了所有的帖子),最常见的建议是在管道的开头添加一个sslHandler,但它不起作用。握手似乎是成功的,因为它也表明了一个相关的问题在这里。 我记得4.0版的情况也一样。0,但我还是设法让它工作了。然而,当我升级到4.0时
客户端要做的是: 连接服务器 发送信息 发送的每个信息,等待和接收从服务器返回的同样的信息 关闭连接 用 ChannelHandler 实现客户端逻辑 跟写服务器一样,我们提供 ChannelInboundHandler 来处理数据。下面例子,我们用 SimpleChannelInboundHandler 来处理所有的任务,需要覆盖三个方法: channelActive() - 服务器的连接被建立