W5300 sendto 지연 문제

#1

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

#2

안녕하세요.

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

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

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

감사합니다.

#3

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

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

#4

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