2011-11-23 3 views
2

UDP (데이터 크기 150 바이트)를 사용하여 한 PC에서 다른 PC로 데이터를 보내는 프로그램이 있습니다. 그 프로그램은 델파이 7 (TldUDPClient 및 TldUDPServer 구성 요소는 데이터를 보내고 보내기 위해 을 사용)에 기록됩니다. 이 프로그램을 30 % 패킷 손실로 테스트해야합니다. (소스 포지에서 다운로드) 창에 대한udp 패킷 손실

내가 사용하는 ipfw : 나는 핑 (ping)을 사용하는 경우

ipfw -f flush 
ipfw add pipe 1 ip from any to any out 
ipfw pipe 1 config plr 0.3 

내가 볼 데이터 손실의 30 %.

델파이 프로그램을 실행하면 얼마 후에는 오류 (socket error 10004)가 반환됩니다. 오류 설명은 중단 된 함수 호출입니다. WSACancelBlockingCall을 호출하여 차단 작업이 중단되었습니다.

내 네트워크 구성 요소와 패킷 손실 에뮬레이션 간의 기능에 문제가 있습니까? 아니면 패킷 손실을 겪을 때 실제 상황에서도이를 볼 수 있습니까? 어떤 다른 방화벽이나 다른 소프트웨어가 패킷 손실의 에뮬레이션에 사용할 수 있습니까?

+0

당신이 하나 개의 UDP 패킷에 UDP를 사용하여 전송 할 데이터의 양? 그것이 기본 네트워크의 패킷 크기보다 크다면 (UDP 패킷은 전체 또는 전혀 도착하지 않을 것임을 보증하지만, 여러 개의 네트워크 패킷이있을 수 있습니다 (공식 이름을 모르는 경우)) 나는 이것이 실생활도. –

답변

3

더 많은 패킷 손실 에뮬레이션 문제와 유사합니다. ipfw 도구가 연결을 방해하는 것 같습니다 - this site에서 - 귀하의 버전입니까? - 소스 코드는이 옵션을 구현하지 않지만 4 살입니다. ping 명령을 사용하면 예상 시간 내에 응답을받지 못했다는 것을 알 수 있습니다. ARP 프로토콜 AFAIR에는 "연결"이 없습니다.

UDP 표준에서 패킷 손실이 발생하지 않습니다. 소켓 레이어에 수신 확인이나 오류 메시지가 검색되지 않습니다.

실제 네트워크 연결에서 UDP 패킷은 자동으로 손실됩니다.

그리고 painfully... perhaps)