3.12 mina简单tcp使用

本文深入探讨了Mina框架中Session的概念、状态及其生命周期管理,包括连接状态、空闲状态的分类与处理,以及如何通过配置实现高效的数据传输与资源管理。同时,介绍了Android客户端如何利用Mina框架进行网络通信,通过具体代码示例展示了连接建立、状态处理、数据发送的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">://blog.youkuaiyun.com/ljx8928358/article/details/7759024</span>

http://blog.youkuaiyun.com/cnicys/article/details/8535485




session就像mina框架的心脏,每一个client的连接到达server之后都会创建一个新的session,一直保存在内存单元中直到client 连接断开。

session 常常用来储存一些和连接相关的持久化信息,这些信息在server 进行处理的时候都是非常有用的,生命周期为整个会话

1、session的状态

通常来讲 mina 的session 有以下几个状态

1、Connected : client 连接上server 之后,这时 session 已经建立,并且该session 是有效的、可用的

2、Idle   : 此时 session并没有处理任何的请求,并且这个时间超过了你设定的 session 进入空闲状态的那个时间点,idle又细分为三个状态

  (1) idle for read  超过读通道设定的空闲时间

  (2) idle for write 超过写通道设定的空闲时间

  (3) idle for both  读写通道均超过设定空闲时间

3、Closing : 这时候session即将被关闭但是有没有完全关闭(对余下未处理完的消息进行 flushed 操作)

4、Closed : session已经完全关闭,并且这个状态时不可逆的







android客户端的使用:

//使用的CPU核心输
			connector = new NioSocketConnector(Runtime.getRuntime().availableProcessors() + 1);
			//设置为非延迟发送,为true则不组装成大包发送,收到东西马上发出     
			connector.getSessionConfig().setTcpNoDelay(true);
			//设置输入缓冲区的大小  
			connector.getSessionConfig().setReceiveBufferSize(Global.SOCKET.READ_BUFFER_SIZE);
			//设置输出缓冲区的大小  
			connector.getSessionConfig().setSendBufferSize(Global.SOCKET.READ_BUFFER_SIZE);
			 //读写 通道均在10 秒内无任何操作就进入空闲状态 
			connector.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 130);
			//数据处理类
			connector.getFilterChain().addLast(
					"codec",
					new ProtocolCodecFilter(new SimpleEncoder(),
							new SimpleDecoder()));
			//处理连接状态,返回处理后数据
			connector.setHandler(new ServerSessionHandler());
			//设置ip端口
			connector.setDefaultRemoteAddress(new InetSocketAddress(ip, port));
			ConnectFuture future = connector.connect();

处理连接:

class ServerSessionHandler extends IoHandlerAdapter { }

处理解析:

public class SimpleDecoder extends ProtocolDecoderAdapter {}

public class SimpleEncoder implements ProtocolEncoder {}

发送一个数据:


public void encode(IoSession session, Object obj, ProtocolEncoderOutput out)throws Exception { 

out.write("hello!");

}

IoSession session

session.write(param);







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值