目前我们的项目,打算用mina作为底层通信平台,现在打算用他的协议处理类,但是我们设计的协议非常大有可能会超过百兆,这样mina会一直累加这个数据到IoBuffer,这样对内存很有压力啊。各位这个怎么解决啊。
或者利用StreamIoHandler来处传输的文件,但是好像没有办法把文件流和协议流同时区分开在过滤器中?大家有没有这样的经验啊,mina不可能不能传输大文件,大家给些建议吧,郁闷中。

解决方案 »

  1.   

    服务端在session的buffer到一定大小时清以下,直接发过去不久好了。
      

  2.   

    对于大文件的话我还是介意使用C/S模式,客户端(也可以是plugin)对需要处理的文件切片或分块读取。服务端根据你的内存情况接收到一定的程序后写磁盘然后清空buffer.每块最好生成MD5码以验证文件的完整性。只是想法。
      

  3.   

    mina可以传输大文件的呀。楼主可以考虑使用不同的模式进行传输就可以了。
    没必要全接收数据,再统一保存到硬盘。
    可以边接收边保存。
      

  4.   

    那怎么实现呢,我现在就是想同时传报头和文件,接收打算收完报头然后收文件时就打算边写磁盘边收。文件是报文的一部分,采用的mina提供的ProtocolCodecFilter过滤器来实现协议的传送,在解码的时候我怎样部分接收呢
      

  5.   

    占用的问题解决了,原因估计是这样的由于mina的服务器和客户端都是IoService的子类,所以接收的文件也可能会被客户端占用,最后把服务器端和客户端分别部署到两台机器就好了
      

  6.   

    你能不能教教我啊,我也想用mina传输文件,能不能把一个例子发给我啊,网上找的例子不符合项目要求,[email protected]谢谢啊!