2014-07-17 39 views
0

我正在處理UDP併發送一些消息。 一條消息包含二進制XML,我正在使用KXML2和以下code。它運行良好。 在UDP上,我必須在DatagramPacket上佔用固定的緩衝區。使用從DatagramPacket中取出的這個字節數組並運行我的KXML2函數,每次都會觸發一個「Unexpected EOF」異常。KXML2:得到UDP包後意外的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的大小放在包的開始處並提取數據,但這僅僅是我的第二種方式。

回答

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

你忽略了數據包的實際長度。它應該是:

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

但我擔心,要麼你還沒有發射的整個數據,或者您構建接收DatagramPacket類的字節數組太短。

+0

謝謝您的回覆。我改變你的解決方案有點符合我的興趣和它的作品。非常感謝! – user3417078