내 Java 응용 프로그램에서 DatagramSocket 통해 DatagramPacket (s)를받습니다. 패킷에 포함될 수있는 최대 바이트 수는 알고 있지만 실제로 모든 패킷 길이는 다릅니다 (최대 길이를 초과하지 않음).받은 DatagramPacket 0x00 트리밍
MAX_PACKET_LENGTH = 1024 (바이트)라고 가정 해 봅시다. 따라서 DatagramPacket이 수신 될 때마다 1024 바이트 길이이지만 항상 모든 바이트가 정보를 포함하는 것은 아닙니다. 패킷에 10 바이트의 유용한 데이터가 있고 나머지 1014 바이트에 0x00이 채워질 수 있습니다.
유용한 데이터 만 다른 레이어로 전달하기 위해이 0x00 (사용되지 않은) 바이트를 트리밍하는 우아한 방법이 있다면 궁금합니다. (아마도 자바 원시 메소드? 루프에 들어가서 어떤 패킷이 포함되어 있는지 분석하는 것은 원하는 해결책이 아니다 :))
모든 힌트를 가져 주셔서 감사합니다. Piotr
나는 패킷의 실제 길이를 반환하지 않을까 두려워. 다음 코드 : int LENGTH = 887; DatagramPacket p = 새 DatagramPacket (새 바이트 [길이], 길이); System.out.println (p.getLength()); 은 887 –
을 출력합니다. 887은 패킷 길이 (생성자에 대한 3 번째 인수)이기 때문에 887이 인쇄됩니다. 이 값은 버퍼의 크기보다 작을 수 있습니다 (예제의 첫 번째'LENGTH').하지만 경우에 따라 다릅니다. –