码迷,mamicode.com
首页 > Web开发 > 详细

Apache mina 输出报文大小修改,解决用作http服务客户端接收到数据最大98304的限制

时间:2015-04-01 17:46:49      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:98304   mina   报文大小   

最近做的一个基于mina的application,用http服务里管理,http服务也是mina实现的,运行时发现,如果http返回的数据大于
98304,客户端将接收不完全折腾了2天,才发现mina每次发送的报文大小是98304,我没有找到多次发送的方法,也不确定多次发送会不会被客户端多次接收到,最后参考了一些资料后,想办法修改了这个大小,你首先要知道你要送的数据的总大小,我实现的方法是HttpResponseMessage里面增加一个总大小,在HttpResponseEncoder (MessageEncoder)里面的encode房方法里面的buf.flip修改为:
msg.setTotal(buf.position());//即设置总大小为实际的数据的大小
buf.flip().shrink();
然后在发送修改发送数据的地方:

int s = session.getConfig().getMaxReadBufferSize();  
WriteFuture wf;
			
wf = session.write(response);//必须先调用这个,encoder才会被调用,才能设置到总大小,下面才能取到	
			
int t = response.getTotal();
if(t>s*1.5){//发送缓冲大小是读取缓冲的1.5倍
				int new_s =(int) (Math.ceil( t /1.5) + 24);
				session.getConfig().setMaxReadBufferSize(new_s);//设置为足够大
			}
			
			wf.setWritten();			
			wf.awaitUninterruptibly();
			
			if (!wf.isDone()) {
				System.out.printf("not send -------------------------------------------\n");
			}

总觉得我的方法很土,但管用,求高手

 

我的群,群名称是: PHPer&页游&Mobile&U3D 2D
群号:95303036
加群除了提问之外,请记得帮助别人,谢谢。
----------------------------------再发个广告。点图进入,支持下我朋友。技术分享

 

 

群名称是: PHPer&页游&Mobile&U3D 2D
群号:95303036
加群除了提问之外,请记得帮助别人,谢谢。
----------------------------------再发个广告,网上买家具便宜1/4,还包邮。点图进入,支持下我老婆。技术分享

 

Apache mina 输出报文大小修改,解决用作http服务客户端接收到数据最大98304的限制

标签:98304   mina   报文大小   

原文地址:http://blog.csdn.net/leinchu/article/details/44808295

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!