2011-02-11 2 views
4

UDP 프로토콜은 데이터가 손상되면 즉 체크섬에 실패 할 경우 수행 할 작업을 정의하지 않는다는 것을 이해합니다. 즉, 우리의 응용 프로그램은 패킷을 재전송 할 수있게 만들거나 패킷을 잃어버린 것으로 선언 할 수 있습니다. ...UDP 데이터 그램 소켓 + 자바 체크섬

자바에서 데이터 그램 소켓을 구현하는 동안 체크섬이 올바른지 또는 전송되지 않은 패킷인지 확인하려고합니다. .

그렇게 할 자바에서 어떤 방법이 ... 거기에 기본적으로 내가 이렇게 전송 및 재전송되어야하는 동안이 패킷이 손상되었다는 것을 알게 것을 원하는

....

고마워요

답변

3

다음 두 클래스를 확인해 보겠습니다 : CheckedInputStreamChecksum. 체크섬은 패킷을 보내는 컴퓨터에서 수행해야하며 패킷을받는 컴퓨터는 체크섬을 수행 한 다음 값을 비교해야합니다. 적어도 그것이 어떻게 끝났는지 알았습니다.

참고 : 체크섬은 전송되는 패킷에 포함되어야합니다. 또한 데이터가 손상되었는지 확인하기 때문에 ByteArrayInputStream도 유용 할 수 있습니다. 여기에 example이 있습니다.

0

먼저 체크섬을 udp 메시지에 추가해야합니다. 나는 체크섬이 메시지의 나머지 부분 앞에 놓여 있다고 가정하고 나는 calcCheckSum이 체크섬을 계산할 수 있다고 가정한다.

import java.net.*; 

DatagramSocket socket = new DatagramSocket(); 
byte[] buffer = new byte[256]; // some appropriate size 
DatagramPacket packet = new DatagramPacket(buf, buf.length); 

socket.receive(packet); 
String checksum = new String(packet.getData(),0, <some length>); 
boolean ok = calcCheckSum(checksum); 
관련 문제