-
flash发送socket,java netty端部分汉字乱码5
我现在用flash使用socket发送一点简单的数字,发送嗲吗如下socket.writeInt(frame.opcode); socket.writeInt(6); socket.writeInt(201); socket.writeUTFBytes("123456"); socket.writeBytes("隐藏了");
java端使用 netty ,主要部分代码如下NioServerSocketChannelFactory factory = new NioServerSocketChannelFactory( Executors.newCachedThreadPool(), Executors.newCachedThreadPool()); ServerBootstrap bootstrap = new ServerBootstrap(factory); bootstrap.setPipelineFactory(new server.net.ServerPipelineFactory()); bootstrap.bind(new InetSocketAddress("192.168.66.123",8081)); logger.info("Ready and Listening");
ServerPipelineFactory类的代码如下:package server.net; import static org.jboss.netty.channel.Channels.*; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.ChannelPipelineFactory; import server.handlers.ServerDecoder; import server.handlers.ServerEncoder; import server.handlers.ServerHandler; public class ServerPipelineFactory implements ChannelPipelineFactory{ @Override public ChannelPipeline getPipeline() throws Exception { ChannelPipeline pipeline = pipeline(); pipeline.addLast("decoder",new ServerDecoder()); pipeline.addLast("encoder",new ServerEncoder()); pipeline.addLast("handler",new ServerHandler()); return pipeline; } }
其中ServerDecoder是负责解析flash传送过来的数据的,乱码就发生在这里
代码如下package server.handlers; import java.io.UnsupportedEncodingException; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.handler.codec.frame.FrameDecoder; import org.jboss.netty.util.CharsetUtil; import server.socketstruct.MsgBody; import server.Server; public class ServerDecoder extends FrameDecoder { @Override protected Object decode(ChannelHandlerContext ctx, Channel chl, ChannelBuffer buf) throws Exception { MsgBody msg=new MsgBody(); int touserlength;//发送消息对象的人的长度 msg.opcode=buf.readInt(); touserlength=buf.readInt(); msg.msgtype=buf.readInt(); byte[] touserby=new byte[touserlength]; for(int i = 0; i < touserby.length; i++) { touserby[i] = buf.readByte(); } byte[] contentbs=new byte[buf.capacity()-12-touserlength]; for(int i = 0; i < contentbs.length; i++) { contentbs[i] = buf.readByte(); } String b1=new String(touserby); String b2=new String(contentbs); try { msg.tousers=new String(b1.getBytes(),"utf-8"); msg.content=new String(b2.getBytes(),"utf-8"); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } return msg; } @Override public void channelOpen( ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { super.channelOpen(ctx,e); Server.allchannelgrp.add(e.getChannel()); } }
msg.content就成了"隐藏??",其他汉字也是,部分乱码2012年3月22日 17:47
目前还没有答案
相关推荐
3. **解决乱码问题**:当客户端接收到乱码时,首先要确认发送端和接收端是否使用了相同的字符编码。可以尝试在接收端使用不同的解码方式进行解码,如`Charset.decode()`方法,指定正确的编码格式,如`...
综上所述,基于Netty编写的socket服务端利用了Java的NIO特性,通过事件驱动和处理器链的方式,实现了高效的网络通信。开发者可以根据需求定制自己的业务处理器,处理各种复杂的网络协议,实现高性能的网络服务。在...
Java Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在标题中提到的“JAVA Netty 获取串口数据并且下发数据”,这意味着我们将探讨如何利用Netty来处理串行...
本话题将探讨如何使用C++客户端与Java(通过Netty框架)服务器端实现TCP通讯,并涉及数据序列化工具Protocol Buffers(protobuf)在两者之间的交互。 首先,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节...
在Java Netty中,我们可以使用NioUdpServerSocketChannel作为服务器端的通道类型,NioUdpClientSocketChannel作为客户端的通道类型。服务器端会监听特定的UDP端口,接收来自SCANFISH-II声呐系统的数据,然后转发到...
Java Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个"Java Netty基于对象数据传输Demo"应该是演示了如何使用Netty进行对象序列化和反序列化,以便在网络...
客户端发送16进制给服务端,并行实现socket通道活动状态...netty作为服务器端如何主动的向传感器发送消息,我尝试当每个传感器连接到netty(TCP/IP)时使用一个map把该channelSocket的id和该channelSocket绑定在一起。
基于 Java Netty实现的可用于内网穿透的代理工具.zip基于 Java Netty实现的可用于内网穿透的代理工具.zip基于 Java Netty实现的可用于内网穿透的代理工具.zip基于 Java Netty实现的可用于内网穿透的代理工具.zip基于...
标题"Java Netty客户端与服务器"表明我们将探讨如何使用Netty构建一个简单的服务器和客户端系统,其中客户端能够发送消息到服务器,而服务器则会给予响应。这种通信模式在许多分布式系统中非常常见,例如聊天应用、...
标题中的“java服务器端(Netty_Proto)和c++客户端tcp通讯”表明这是一个关于使用Java的Netty框架和Google的Protocol Buffers(ProtoBuf)进行TCP通信的项目。Netty是一个高性能、异步事件驱动的网络应用框架,常...
标题中的“Netty实现Java服务端和C#客户端联通”是指使用Netty作为Java服务器框架,与C#客户端(使用DotNetty库)进行通信的一种技术实现。这涉及到跨平台的网络通信,以及两个不同编程语言间的交互。 Netty是Java...
Netty 是一个基于 Java 的高性能、异步事件驱动的网络应用程序框架,专为开发协议服务器和客户端而设计。它的核心是基于 NIO(非阻塞 I/O)模型,提供了丰富的 API 和高度可定制的组件,使得开发者能够快速、高效地...
Java Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这本书“Java Netty权威指南”是深入理解并掌握Netty的关键资源,包含详细的目录,使得学习和查阅更为...
Java应用程序中的Netty框架是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty广泛应用于分布式系统、云计算、大数据处理等领域,它的核心特性包括非阻塞I/O、...
毕设:基于Java Netty 实现的多人联机游戏(多人对战)的客户端和服务器端.zip 毕设:基于Java Netty 实现的多人联机游戏(多人对战)的客户端和服务器端.zip 毕设:基于Java Netty 实现的多人联机游戏(多人对战)...
示例代码(NettyDemo)可能包括以下部分: - 创建ServerBootstrap实例,设置EventLoopGroup,配置ServerChannelHandler。 - 定义处理器Pipeline,添加自定义的业务处理器,如MessageDecoder,MessageEncoder,...
【描述】:“从socket到netty,从易到难,稳扎稳打,欢迎交流,java学习者关注:客户端服务端socket通信” Socket,也被称为套接字,是网络编程的基本接口,它允许两个网络应用程序之间进行数据交换。在Java中,`...
在“netty-socket-master”这个压缩包中,可能包含了服务器端和客户端的代码实现,包括Bootstrap的配置、ChannelHandler的定义、数据传输的逻辑等。通过对这些代码的学习和分析,开发者可以深入理解Netty在Android上...
在Java编程环境中,Netty是一个高性能、异步事件驱动的网络应用程序框架,常用于构建可伸缩、高并发的服务器。本示例关注的是如何利用Netty实现一个基于UDP(User Datagram Protocol)的数据接收服务,这在需要进行...
JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA...