Java Mina Socket通信 中文乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java Mina Socket通信 中文乱码相关的知识,希望对你有一定的参考价值。

Java Mina 作为服务端,安卓和C++使用Socket作为客户端连接,现在传输过来的IoBuffer解析后出现乱码,因为里面包含中文,请问如何解决,谢谢。

参考技术A 编码格式问题 转换为UTF-8就好了 参考技术B String str=new String(s.getBytes("GBK"),"UTF-8");
做个转码操作

java之网络通信框架mina

一 mina

1.1 mina作用概述

mina是一个基于java nio的网络通信框架。主要屏蔽了网络通信的一些细节,对Socket进行封装,并且是NIO的一个实现架构,可以帮助我们快速的开发网络通信,常用于游戏的开发、中间件服务端的程序中

Apache的Mina(Multipurpose Infrastructure Networked Applications)是一个网络应用框架,可以帮助用户开发高性能和高扩展性的网络应用程序;它提供了一个抽象的、事件驱动的异步API,使Java NIO在各种传输协议(如TCP/IP,UDP/IP协议等)下快速高效开发

        Mina最主要的工作就是把底层传输的字节码转换为Java对象,提供给应用程序;或者把应用程序返回的结果转换为字节码,交给底层传输

1.2 mina传输数据的类型

1.3 IOService接口

用于描述我们的客户端和服务端的接口,其子类是Connector和Acceptor,Connector描述我们的客户端,Acceptor描述服务端。

  • Connector描述我们的客户端,Acceptor描述服务端

  • IOprocessor多线程的环境来处理我们的连接请求流程。

  • IoFilter提供数据的过滤工作,包括编解码、日志等信息的过滤。

  • Handler业务对象,自定义handler需要实现IOHanlerAcceptor。

 1.4 IOSession接口

IOSession:描述的是客户端和服务端的连接,常用于接受和发送数据。

 1.5 长链接与短连接

   长连接:通信双方长期的保持一个连接状态不断开,一旦建立连接后,就不断开,除非发生异常,比较消耗IO资源。

    短连接:通信双方不是保持一个长期的连接状态,比如Http协议,当客户端发起http请求,服务器处理http请求,当服务器处理完成后,返回客户端数据后就断开链接。

默认是代开长连接的,处于监听会话状态,可以改成短连接。如下图  服务端设置

二 ioservice接口详解

2.1  作用

    实现了对网络通信的客户端和服务端之间的抽象,子接口IOConnector用于描述客户端,子接口IOAcceptor用于描述服务端。

    作用:IOService可以管理我们网络通信的客户端和服务端,并且可以管理连接双方的会话session,同样可以添加过滤器。

常用接口为:IoService,IoAcceptor,IoConnector

常用类为:NioSocketAcceptor,NioSocketConnector

 

分析:

IoService接口声明了服务端的共有属性和行为;
IoAcceptor接口继承了IoService接口,并添加了服务端特有的接口属性及方法,比如bind()方法,成为典型的服务端接口;
IoConnector接口同样继承了IoService接口,并添加了客户端特有的接口属性及方法,比如connect()方法,成为典型的客户端接口;
AbstractIoService实现了IoService中管理服务的方法,比如getFilterChainBuilder方法---获得过滤器链;
AbstractIoService抽象类继承了AbstractIoService抽象类并实现了IoAcceptor接口,成为了拥有管理服务端实现功能的服务端类;我们常用的NioSocketAcceptor就是它的子类;
AbstractIoConnector抽象类继承了AbstractIoService抽象类并实现了IoConnector接口,成为了拥有管理客户端实现功能的客户端类;我们常用的NioSocketConnector就是它的子类;


 2.2  api

1.ioservice

2.ioconector

 3.ioAcceptor

4.NIOsocketAcceptor 

 5.NIOsocketConnector

以上是关于Java Mina Socket通信 中文乱码的主要内容,如果未能解决你的问题,请参考以下文章

java之网络通信框架mina

大并发量socket 通信框架MINA介绍

java udp通信中文乱码

MINA 框架总结 整体理解

java socket 网络通信返回文本转码问题 java socket 网络通信返回文本是乱码,怎么转为GBK?

Java Socket实战之一 单线程通信基础socket