안녕하세요. W5500을 이용해서 오디오 스트림 리시버를 제작중에 있습니다.
원래 W5100으로 개발을 해서 시연을 완료하였고,
W5500으로 변경해서 재개발하고 있습니다.
문제는 서버에 접속해서 socket established상태에서
계속해서 오디오 스트림만 전송받아서 재생하면 되는데,
접속후에 몇 십분 정도 후에 갑자기 접속이 끊깁니다.
서버쪽 문제인가 해서 서버쪽에서 WireShark 돌려보았는데,
remote host 즉 W5500측에서 RST 신호를 보내서 connection close가
되는 것입니다.
Sn_IR이나 IR은 0x00 그대로입니다.
인터럽트 방식을 쓰기 때문에, 인터럽트가 걸리면 바로 처리하고 클리어합니다.
Sn_CR은 설명드렸다시피, 최초 서버 로그인 이후에는 스트림만 받기 때문에,
딱히 명령내릴일이 없습니다.
끊길 때도 딱히 명령을 주거나 하지는 않습니다.
즉 TCP Connection 이후에는 서버로그인외에는 서버쪽으로 데이터를 주는 경우는
없습니다.
제공하는 드라이버는 사용하고 있습니다.
다만 예제 코드가 없어서, w5100에서 사용했던 예제코드를 좀 수정해서 사용하고
있습니다.
그리고 가장 큰 의문사항이 W5500이 tcp socket을 통해서 RST 패킷을 보내고,
socket established 상태로 유지되는 것이 가능한 일인가 하는것입니다.
어떤 이유건 정상적으로 RST 패킷을 보냈다면 close상태가 되는것이 맞는게 아닌가 해서요.
원인을 찾은 듯 합니다.
전혀 예상치 못했던 문제네요… -_-;;
회사 내 로컬 아이피 (유동 아이피는 아닙니다.)를 사용중인데,
아이피 충돌이 있었던 듯 싶습니다.
IP conflict error를 검출하게 해 놨는데, 안나오길래 그건 생각지 못했네요.
스위치를 거쳐서 외부 서버로 나가다 보니, ARP상에서 IP 충돌을 감지하지
못한것 같네요…
동작을 잘 하다가 갑자기 그러니 좀 황당했습니다.
답변 감사합니다.