2014-07-17 2 views
0

UDP를 처리하고 일부 메시지를 보내고 있습니다. 하나의 메시지에 바이너리 XML이 포함되어 있으며 KXML2에 다음 code을 사용하고 있습니다. 잘 돌아갑니다. UDP에서는 DatagramPacket에서 고정 버퍼를 사용해야합니다. DatagramPacket에서 가져온이 바이트 배열을 사용하고 KXML2 함수를 실행할 때마다 "예기치 않은 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