W5300 sendto 지연 문제

UDP 통신방식 사용하고 있는데요
만약에 비정상적인 상태(케이블 분리 등) 데이터 전송 시 sendto에서 시간지연이 2초정도 생깁니다.
이 현상(2초 무한 루프)때문에 프로그램이 정상동작하지 않는데요…
개선할 방법이 없을까요??
전송 대기하는 것은 있어야 할 듯 한데 케이블 분리시 시간이 너무 오래걸리네요…

안녕하세요.

UDP 통신시 데이터를 보내기 전에 ARP를 이용하여 목적지의 MAC주소를 받아오게 됩니다.

만약 목적지의 주소가 하나라면 처음 ARP 요청 이후에는 ARP 요청을 하지 않고 데이터를 내보내게 됩니다.
그러나 목적지의 주소가 둘 이상이면 주소가 변경 될때마다 ARP요청을 하게 됩니다.
그리고 이 ARP요청의 경우 응답을 받지 못하면 Timeout 이 발생하게 되는데 이는
RCR(Retransmission Timeout-period Register)값에 따라 발생하게 됩니다.
기본값으로는 200ms 이므로 2초동안 대기후 응답이 없으면 timeout이 발생하게 됩니다.

따라서 이 레지스터를 설정하여 대기시간을 줄일 수 있습니다.
다만 어플리케이션 상에서 이 값을 변경할 경우 문제가 발생하지 않을지 검토 해봐야 할겁니다.

감사합니다.

또한 RCR(Retransmission Retry-Count Register)값의 따라 재전송 횟수가 정해집니다.

이 레지스터를 설정하여 재전송 횟수를 지정할 수도 있습니다.

타임아웃전에 카운터 2000번정도 체크후 나오니 되긴하는데요…
케이블연결시도 잘되고요…
정상적인지는 모르겠네요