KXML2:收到udp报文后意外EOF



我正在处理UDP和发送一些消息。一条消息包含二进制XML,我使用KXML2编写以下代码。它运行良好。在UDP上,我必须在DatagramPacket上取一个固定的缓冲区。使用从DatagramPacket获取的字节数组并运行我的KXML2函数,每次发生"意外EOF"异常时触发。

    myPacket = new DatagramPacket( new byte[1024], 1024);
    InputStream in = new ByteArrayInputStream(myPacket.getData());
    WbxmlParser parser = new WbxmlParser();
    parser.setInput(in, "UTF-8");
    org.kxml2.kdom.Document dom = new org.kxml2.kdom.Document();
    dom.parse(parser);

在'dom.parse(parser);'抛出异常知道正确的EOF是什么样的吗?也许可以将二进制xml blob的大小放在包的开头并提取数据,但这对我来说只是第二种方法。

InputStream in = new ByteArrayInputStream(myPacket.getData());

您忽略了数据包的实际长度。应该是:

    InputStream in = new ByteArrayInputStream(myPacket.getData(), myPacket.getOffset(), myPacket.getLength());

但是我担心您没有传输整个数据或者您构造接收DatagramPacket的字节数组太短。

最新更新