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

最近做的一个基于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服务客户端接收到数

相关文章:

你感兴趣的文章:

标签云: