2014-09-17 2 views
0

내가 보내는 UDP 소켓이 100 문자열 매 일초 및 데이터 내가 문자열을 전송하는 데이터 패킷 손실을C#의 UDP 소켓 체크 패킷 손실

소스 데이터가 적합한 지 여부를 확인하고 측정 할받은 경우 :

string toSend; 
byte[] data = Encoding.ASCII.GetBytes(toSend); 

내가 UDP 내가 그 수신기 이미 데이터를 전송 데이터를 통계에 대해 너무

수신 알고 이미받은 것을 제외하고, 데이터를 잘인지 확인할 수 없습니다 및 패킷 손실을 측정 할 수 없습니다 알고 5 초마다 알다.

데이터 수신시 데이터가 올바르게 전송되었는지 또는 패킷 손실인지 어떻게 알 수 있습니까?

답변

1

어떤 종류의 시퀀스 번호를 포함하는 프로토콜 인 UDP 상단에 자신 만의 프로토콜을 추가하십시오. 0에서 시퀀스 번호를 시작한 다음 6 개의 패킷을 보내면 마지막 패킷의 시퀀스 번호는 5입니다. 시퀀스 번호가 0, 1 및 5 인 패킷을 수신하면 6 개의 패킷에 대해 50 %의 패킷 손실이 발생한다는 것을 알 수 있습니다 .

오류 검사를 위해 각 패킷에 간단한 체크섬을 추가하십시오. 당신은 더 나은 안정성을 원한다면 잘못된 순서로 도착하는 패킷이 올바른 순서로 재 배열되도록


또한, 다음 순서 번호 체계 쉽게 패킷 재정렬을 구현할 수 있습니다. 또한 손실 된 패킷의 확인 및 재전송을 구현하는 것도 쉽습니다. 따라서 이것을 UDP 위에 추가하는 것은 매우 간단한 TCP와 유사한 프로토콜을 구현하는 방법입니다. UDP를 사용하는 많은 프로토콜이이 중 일부 또는 전부를 구현합니다.