我是Netty的新手,已经成功创建了一个通过TLS工作的服务器。我现在正在设计第二台服务器,但我对管道有一些问题。我需要的是一个动态管道,比如Netty的port unification示例:http://netty.io/4.0/xref/io/netty/example/portunification/PortUnificationServerHandler.html
每个连接都从客户端发送UTF-8编码的字符串开始。我看得很清楚,但我的回答不清楚。我的回答只是一个3字节的字节数组。
这是我的服务器:
// Configure the server
EventLoopGroup bossGroup = new NioEventLoopGroup(1);
EventLoopGroup workerGroup = new NioEventLoopGroup();
try {
ServerBootstrap b = new ServerBootstrap();
b.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class)
.option(ChannelOption.SO_BACKLOG, 100)
.handler(new LoggingHandler(LogLevel.INFO))
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline pipeline = ch.pipeline();
pipeline.addLast(new LineBasedFrameDecoder(192));
pipeline.addLast(new StringDecoder(CharsetUtil.UTF_8));
pipeline.addLast(new ByteArrayEncoder());
pipeline.addLast(new TokenHandler());
}
});
// Start the server
ChannelFuture f = b.bind(port).sync();
// Wait until the server socket is closed
f.channel().closeFuture().sync();
}
finally {
// Shut down all event loops to terminate all threads
bossGroup.shutdownGracefully();
workerGroup.shutdownGracefully();
}
我的TokenHandler是SimpleChannelInboundHandler:
public class TokenHandler extends SimpleChannelInboundHandler<String> {
@Override
protected void channelRead0(ChannelHandlerContext channelHandlerContext, String token) throws Exception {
System.out.println("Token received: " + token);
channelHandlerContext.writeAndFlush(new byte[] {2, 1, 0});
}
}
我还试着用
channelHandlerContext.writeAndFlush(Unpooled.copiedBuffer(new byte[] {2, 1, 0}));
从我的管道中删除ByteArrayEncoder,但这没有任何区别:没有发送字节。如果我添加一个StringEncoder,我可以发送字符串,Netty的Echo示例也可以工作(可从用户指南:http://netty.io/wiki/user-guide-for-4.x.html).我猜这对Netty来说是个基本的错误,但我找不到其他有类似问题的人。
编辑:我用的是Netty 4.0.34。最终的
我应该更仔细地阅读这些文件。解决方案是将super(true)添加到TokenHandler的构造函数中,因为默认情况下,SimpleChannelInboundHandler会在处理后释放其消息,从而阻止响应在管道中进一步传播。
问题内容: 我正在将jQuery AJAX POST发布到Servlet,并且数据采用JSON字符串的形式。它已成功发布,但在Servlet端,我需要将这些键- 值对读入Session Object并将其存储。我尝试使用JSONObject类,但无法获取它。 这是代码段 在Servlet方面 问题答案: 您实际上并没有解析json。
我刚来Java,如果这是个明显的问题,我很抱歉。 我正在尝试逐个字符读取字符串以创建树节点。例如,输入,节点为 我注意到了 我可以用一个循环来获得所有的角色吗?就像 我试过了,但不管用。 我该怎么做? 非常感谢你的帮助。 扫描器读取器=新扫描器(System.in);System.out.println(“将节点输入为大写字母,不带空格,结尾为'/'”);int i=0;char node=rea
如何将字符串(字节字符串)转换为字节(字节字符串),而不必手动复制和粘贴字符串并在其前面放置b?
问题内容: 为了转换字符串,我将其转换为字节,如下所示: 为了转换,我做了:显然不起作用。我将如何转换回去? 问题答案: 您原来的城市名称中有哪些字符?尝试这样的UTF-8版本:
我正在寻找一种在读取字节(作为字节[])和从文件中读取字符串行之间切换的方法。我知道字节[]可以通过FileInputStream从文件中获取,字符串可以通过BufferedReader获取,但同时使用这两个字节是有问题的。我知道字节段有多长。当我写文件时,字符串编码可以保持不变。该文件类型是一个仍在开发中的自定义文件类型,因此我可以更改向其写入数据的方式。 我怎么能读取字符串和字节[]s从相同的
如何读取文件并从json转换为字符串?示例:我的文件编号为。json[“23423423”,“234234234”,“53453453”] 我想要的是:String numbers=“'23423423','234234234','53453453'”;