0 0

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
目前还没有答案

相关推荐

    Netty进制转换乱码问题

    3. **解决乱码问题**:当客户端接收到乱码时,首先要确认发送端和接收端是否使用了相同的字符编码。可以尝试在接收端使用不同的解码方式进行解码,如`Charset.decode()`方法,指定正确的编码格式,如`...

    基于netty编写的socket服务端

    综上所述,基于Netty编写的socket服务端利用了Java的NIO特性,通过事件驱动和处理器链的方式,实现了高效的网络通信。开发者可以根据需求定制自己的业务处理器,处理各种复杂的网络协议,实现高性能的网络服务。在...

    JAVA netty 获取串口数据并且下发数据

    Java Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在标题中提到的“JAVA Netty 获取串口数据并且下发数据”,这意味着我们将探讨如何利用Netty来处理串行...

    c++客户端和java(Netty)服务器端tcp通讯

    本话题将探讨如何使用C++客户端与Java(通过Netty框架)服务器端实现TCP通讯,并涉及数据序列化工具Protocol Buffers(protobuf)在两者之间的交互。 首先,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节...

    基于java netty的udp客户端声呐数据对接

    在Java Netty中,我们可以使用NioUdpServerSocketChannel作为服务器端的通道类型,NioUdpClientSocketChannel作为客户端的通道类型。服务器端会监听特定的UDP端口,接收来自SCANFISH-II声呐系统的数据,然后转发到...

    Java Netty基于对象数据传输Demo

    Java Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个"Java Netty基于对象数据传输Demo"应该是演示了如何使用Netty进行对象序列化和反序列化,以便在网络...

    Netty 实现scoket 主动推送数据到服务和服务端实现方式

    客户端发送16进制给服务端,并行实现socket通道活动状态...netty作为服务器端如何主动的向传感器发送消息,我尝试当每个传感器连接到netty(TCP/IP)时使用一个map把该channelSocket的id和该channelSocket绑定在一起。

    基于 Java Netty实现的可用于内网穿透的代理工具.zip

    基于 Java Netty实现的可用于内网穿透的代理工具.zip基于 Java Netty实现的可用于内网穿透的代理工具.zip基于 Java Netty实现的可用于内网穿透的代理工具.zip基于 Java Netty实现的可用于内网穿透的代理工具.zip基于...

    JavaNetty客户端与服务器

    标题"Java Netty客户端与服务器"表明我们将探讨如何使用Netty构建一个简单的服务器和客户端系统,其中客户端能够发送消息到服务器,而服务器则会给予响应。这种通信模式在许多分布式系统中非常常见,例如聊天应用、...

    java服务器端(Netty_Proto)和c++客户端tcp通讯.rar

    标题中的“java服务器端(Netty_Proto)和c++客户端tcp通讯”表明这是一个关于使用Java的Netty框架和Google的Protocol Buffers(ProtoBuf)进行TCP通信的项目。Netty是一个高性能、异步事件驱动的网络应用框架,常...

    Netty实现Java服务端和C#客户端联通

    标题中的“Netty实现Java服务端和C#客户端联通”是指使用Netty作为Java服务器框架,与C#客户端(使用DotNetty库)进行通信的一种技术实现。这涉及到跨平台的网络通信,以及两个不同编程语言间的交互。 Netty是Java...

    netty-4.1_javaNetty_netty_服务器_

    Netty 是一个基于 Java 的高性能、异步事件驱动的网络应用程序框架,专为开发协议服务器和客户端而设计。它的核心是基于 NIO(非阻塞 I/O)模型,提供了丰富的 API 和高度可定制的组件,使得开发者能够快速、高效地...

    java netty权威指南完整版带目录

    Java Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这本书“Java Netty权威指南”是深入理解并掌握Netty的关键资源,包含详细的目录,使得学习和查阅更为...

    java应用netty服务端和客户端

    Java应用程序中的Netty框架是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty广泛应用于分布式系统、云计算、大数据处理等领域,它的核心特性包括非阻塞I/O、...

    基于Java Netty 实现的多人联机游戏(多人对战)的客户端和服务器端.zip

    毕设:基于Java Netty 实现的多人联机游戏(多人对战)的客户端和服务器端.zip 毕设:基于Java Netty 实现的多人联机游戏(多人对战)的客户端和服务器端.zip 毕设:基于Java Netty 实现的多人联机游戏(多人对战)...

    NettySocket同步数据获取实现

    示例代码(NettyDemo)可能包括以下部分: - 创建ServerBootstrap实例,设置EventLoopGroup,配置ServerChannelHandler。 - 定义处理器Pipeline,添加自定义的业务处理器,如MessageDecoder,MessageEncoder,...

    从socket到netty

    【描述】:“从socket到netty,从易到难,稳扎稳打,欢迎交流,java学习者关注:客户端服务端socket通信” Socket,也被称为套接字,是网络编程的基本接口,它允许两个网络应用程序之间进行数据交换。在Java中,`...

    Android-netty和socket通信的demo

    在“netty-socket-master”这个压缩包中,可能包含了服务器端和客户端的代码实现,包括Bootstrap的配置、ChannelHandler的定义、数据传输的逻辑等。通过对这些代码的学习和分析,开发者可以深入理解Netty在Android上...

    java实现基于netty 的udp字节数据接收服务

    在Java编程环境中,Netty是一个高性能、异步事件驱动的网络应用程序框架,常用于构建可伸缩、高并发的服务器。本示例关注的是如何利用Netty实现一个基于UDP(User Datagram Protocol)的数据接收服务,这在需要进行...

    JAVA版基于netty的物联网高并发智能网关.zip

    JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA...

Global site tag (gtag.js) - Google Analytics