0 0

mina 丢包的问题5

项目中一直存在这样一个问题:在某个时刻,就会报这样的错

  org.apache.mina.filter.codec.ProtocolDecoderException: java.lang.IllegalArgumentException: capacity: -12 (Hexdump: 00 00 00 00 00 00 00 00 01 AF 4B 00 01 02 00 00 00 08 01 00 00 00 01 01 00 00 01 6B 00 00 00 A5 10 10 10 15 1A F4 BA 88 01 03 00 01 AF 4B 01 00 04 33 30 30 39 00 00 00 2B 00 00 00 0D 02 01 00 00 02 24 00 00 06 A8 00 00 00 00 00 00 01 63 00 00 00 49 00 00 00 04 00 00 00 AA 00 00 00 00 00 00 00 2C 00 00 00 00 00 00 03 93 00 00 03 C3 00 00 00 50 00 00 00 3C 00 00 00 1B 00 00 00 1B 00)
at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:251)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
at org.apache.mina.filter.logging.LoggingFilter.messageReceived(LoggingFilter.java:284)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:693)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:646)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:635)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(AbstractPollingIoProcessor.java:67)
at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1079)
at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.IllegalArgumentException: capacity: -12
at org.apache.mina.core.buffer.IoBuffer.allocate(IoBuffer.java:224)
at org.apache.mina.core.buffer.IoBuffer.allocate(IoBuffer.java:210)
。。。。。。。。。。。


报错的直接原因是:每读一条消息前面的四个字节是包长,读这条消息时,前四个字节为0,不符合协议规范,就抛错了。
本人用抓包工具,跟踪后发现:实际上网络层接受到的数据是完整的,且符合协议规范。所以这里应该能排出客户端的原因
客户端实际上发来了3条数据,而mina只成功解析了一条,在解析第二条的时候就抛了这样的错误。而第三条消息也包含在了异常打印出的字节里面

诡异的地方是异常所打印出来的16进制,实际上前头还有18个字节不知道丢哪去了。正因为丢了这18个字节,所以才抛了错。
当然这个异常每次出现,所丢的字节数是不确定的。且这个异常复现的时机也不确定。
不知道各位大牛是否遇到过这样的情况?或者能帮我分析分析这报错的真正原因。。。。
2012年3月27日 10:20

3个答案 按时间排序 按投票排序

0 0

估计因为socket 一次发过来的信息包括第一条部分信息和第二条部分信息,你在解析的时候完整的解析了第一条信息,但是第二条的部分信息被丢弃了,从而造成“丢包”的假象。

2015年6月04日 18:05
0 0

MinBufferReadSize调大些即可

2014年8月28日 19:35
0 0

mina只是包装了NIO,本身不会丢包吧。
你持续的ping一下你的网络,看看是不是网络问题造成的丢包。

2012年3月27日 19:03

相关推荐

    mina心跳包机制

    mina心跳包机制是Apache Mina框架中的一个关键特性,它用于维持网络连接的活跃状态,确保数据能够在客户端和服务端之间顺畅地传输。Mina是一个高度可扩展的Java网络应用框架,广泛应用于各种分布式系统和网络服务,...

    mina demo mina jar包

    "Mina demo mina jar包"指的是使用Apache Mina框架创建的一个演示示例,这个示例展示了如何运行一个基本的服务端,能够接收客户端的数据并返回响应。 在Mina框架中,服务端通常会创建一个Acceptor,监听特定的端口...

    Mina 实例 包含jar包

    在这个"Mina实例 包含jar包"的压缩包中,我们预计会找到运行Mina示例所需的所有依赖库。 Mina的核心设计思想是提供一个可扩展的框架,允许开发者创建各种类型的网络服务,如TCP/IP协议的应用(如HTTP、FTP)、UDP...

    java mina组合包

    这个“java mina组合包”看起来包含了Mina库的所有必要组件和可能的扩展,为开发者提供了完整的开发环境。 Mina的核心概念是基于NIO(非阻塞I/O)模型,它允许在单个线程上处理多个连接,从而极大地提高了系统资源...

    mina 断包,粘包问题解决

    本文将深入探讨“mina断包”和“粘包”问题,以及如何通过提供的mina_optimize代码解决这些问题。 首先,我们要理解什么是“断包”和“粘包”。在TCP/IP通信中,数据通常会被拆分成多个数据段进行传输,这在传输...

    Apache Mina jar包

    Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架

    MINA1.7包(源码)

    MINA(Multipurpose Infrastructure for Network Applications)是Apache软件基金会的一个开源项目,主要为构建高性能、跨平台的网络应用程序提供框架。MINA1.7版本是一个成熟的版本,它提供了丰富的网络通信API,...

    mina简单通信需要的包

    标题中的“mina简单通信需要的包”指的是Apache Mina框架,这是一个用于构建高性能、异步网络应用程序的Java框架。在本文中,我们将深入探讨Mina的核心概念和它在通信中的应用,以及与之相关的库SLF4J。 Apache ...

    mina依赖jar包

    这个"mina依赖jar包"的集合包含了MINA项目运行所需的全部依赖库,整理于2012年11月,确保了当时最新的资源。 MINA作为一个网络通信框架,它的核心特点包括: 1. **非阻塞I/O模型**:MINA采用NIO(Non-blocking ...

    Mina例子包含与spring整合

    Apache MINA(Multipurpose Infrastructure for Network Applications)是一个Java框架,专注于简化网络应用开发,特别是使用Non-blocking I/O(NIO)的方式。MINA提供了一种高效、可扩展且灵活的框架,使得开发者...

    mina.zip内涵所有mina所需jar包

    描述中重复提到"mina.jar 包,内涵mina所需的所有jar包,解压即可,测试可用",意味着这个"mina.jar"可能是一个集成了所有依赖的单一文件,或者是一个包含所有依赖的目录结构。这种打包方式便于用户快速部署和测试,...

    mina框架资源包

    《mina框架资源包详解——构建即时通讯服务器的关键组件》 Mina框架,全称为Apache Mina,是一款基于Java开发的网络通信应用框架,它提供了一种简单而高性能的方式来构建网络服务,尤其在处理TCP/IP、UDP/IP以及SSL...

    Mina断包,粘包处理(完整实例,有客户端,服务端)

    本实例主要关注的是Mina在处理网络通信时遇到的两个常见问题——“断包”和“粘包”。 1. **断包**: 当数据在网络中传输时,可能会因为各种原因(如网络拥塞、数据包大小限制等)被分割成多个部分,这些部分在...

    mina所需jar包

    标题中的“mina所需jar包”指的是Apache Mina项目所需的Java归档(JAR)文件集合。Apache Mina是一个网络通信框架,它为开发者提供了一种简单的方式来构建高性能、高可用性的网络应用程序。在这个描述中,我们看到有...

    Apache MINA框架所用的jar包

    在MINA中,log4j用于收集和输出框架运行过程中的调试信息、警告和错误,帮助开发者追踪和解决问题。 3. **slf4j-api-1.5.11.jar**:简单日志门面(SLF4J)是一个为各种日志框架提供一个抽象层的API,允许最终用户在...

    APACHE MINA jar 包

    核心jar包

    mina-2.0.19官方相关jar包

    在"mina-2.0.19官方相关jar包"中,包含的可能是一系列MINA框架所需的JAR文件,包括核心库、依赖的第三方库以及可能的示例或测试类。这些JAR文件可以帮助开发者快速集成MINA到自己的项目中,进行网络服务的开发。如果...

    mina发布所有jar包

    标题“mina发布所有jar包”表明我们将探讨MINA项目的全套JAR文件,这些文件包含了运行和开发基于MINA的应用所需的所有组件。 描述中提到“包含操作文档”,意味着除了核心库之外,压缩包可能还包含了使用和配置MINA...

    mina2.0全部jar包

    《mina2.0全部jar包详解》 Apache MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、异步事件驱动的网络应用程序框架,主要用于简化开发Java网络应用,特别是那些基于TCP和UDP协议的...

    mina开发相关jar包

    最新的 mina相关jar包 合集,里边有apache-mina-2.0.7-bin.zip,apache-mina-2.0.7-src.zip,log4j-1.2.17.zip,slf4j-api-1.6.6.jar,slf4j-api-1.6.6-sources.jar,slf4j-log4j12-1.6.6.jar,mina-example-2.0.7....

Global site tag (gtag.js) - Google Analytics