먼저 네트워크 구성이 어떻게 되어있는지 설명 부탁드립니다.
그리고 '튕김 현상’이라는 것이 W3150의 status register가 closed 된 것인지(상대방의 disconnect 또는 Fin packet에 의한), timeout이 발생한 것인지 확인 해보세요.
그리고 테스트방향을 아래와 같이 잡으시면 좀 더 빠를 것 같네요.
3150의 네트워크 세팅이 날라가서 연결이 끊긴 거라면,
접속이 끊긴 다음 W3150으로 ping테스트를 해보세요. ping reply가 없다면 네트워크 세팅이 변경이 되거나 리셋이 됬다는 의미로 볼수 있습니다.
W3150이 서버든 클라이언트든 상대방과의 TCP connection이 끊긴 거라면
연결이 끊어졌을 때 status register를 확인해보세요.
만약 0x17(established)라면 물리적으로 끊긴 후 time out이 발생하여 close 됩니다.
혹은 상대방에 의해 연결이 종료되는 것인지 확인해보세요.
그리고 가능하면 wireshark같은 패킷캡쳐 프로그램으로 주고 받는 패킷을 잡아보는게 문제를 확인하기 쉬울 겁니다.
다름이 아니라 점검중에 궁금한 점이 세가지가 있어서 여쭙니다.
첫째는, 초기 전원을 투입한 뒤
UI에서 Connect 하면 socket0 status = 0x00
이후, UI에서 명령 커맨드를 보내면 socket0 status = 0x17 (established) 가 됩니다.
그런데 Close 명령을 보내거나, 랜 케이블을 제거해도 socket0 status = 0x17로 변화가 없습니다.
socket0 status의 레지스터 상태값의 변화가 맞는 것인지요?
둘째는, 정상적으로 TCP Mode로 Connection이 되어 있는 상태에서
즉, UI에서 접속이 되어 운영되고 있는 상태에서 → socket0 status = 0x17 (established 상태)
랜 케이블을 뺏다가 십여분 후에 다시 랜 케이블을 연결한 후 명령 커맨드를 주면 정상적으로 동작을 합니다.
그런데, UI에서 Connection이 되어 운영되고 있는 상태에서 → socket0 status = 0x17 (established 상태)
랜 케이블을 뺏다가 다시 랜 케이블을 연결한 후 Connect를 시도하면 이후로는 재 접속이 되지도 않고 재 접속할 방법이 없습니다.
어떻게 하면 전원을 껏다 키지 않고 재 접속이 되도록 할 수 있는지요
셋째는, 물리적으로 랜 케이블이 빠지거나 하면 일정시간 이후 자동으로 Close 된다고 하는데요
자동으로 Close 된 상태를 status 레지스터에서 확인 할 수 있는지요~
물리적인 연결이 끊긴 이후 데이터 전송이 없을 경우 established로 유지되는 것이 맞습니다.
그러나 데이터 전송이 한번이라도 있을경우 ACK를 받지 못하므로 RCR, RTR 세팅에 의한 재전송이 일어난 이후 time out이 발생하여 close 되게 됩니다.
먼저 W3150과 상대방이 close가 되었는지요??
close가 안된 상태라면 둘 다 close가 되야지 접속이 가능하겠죠??
만약 둘다 close가 된 상태라면 왜 안되는지는 상대방의 어플리케이션에 따라 달라질겁니다.
예를 들어 window같은 경우 close 하게 된다고 해도 일정 시간동안 port번호를 기억하고 있습니다. 그렇기 때문에 동일 port로 접속이 불가능 하게 됩니다. 그리니 W3150의 펌웨어를 만드실때 재접속할 경우 sourse port번호를 바꿔서 접속을 시도해보세요(W3150이 client일 경우). 상대방이 client일 경우에도 동일하게 해보세요.
W3150을 서버로, UI를 클라이언트로 붙여서 사용하고 있습니다.
UI를 붙였다가 Close를 보내면 UI도, W3150도 Close 됩니다.
그런데, UI에서 Close를 보냈는데 W3150이 Close가 안되는 현상이 관찰됩니다.
socket0 status = 0x17 (established 상태) 입니다.
UI를 다시 붙이려니 W3150이 Close가 되어 있지 않아서 붙지를 않는것 같습니다.
W3150을 껏다 키면 UI가 붙습니다.
socket0 status = 0x17 (established 상태) 입니다.
왜? 이런 현상이 생기는지 오리무중입니다.
이런 경우를 경험하신 사례가 있으신지요
조언 부탁드립니다.
감사합니다.
한정수 드림
Client를 W3150에 붙인 후 Lan 케이블 빼거나, 접속을 불량하게 한 후에
Client에서 Close를 하면 Client는 Close 되었으나 실제 W3150은 Close가 되지 않은 상태가 됩니다.
그렇기 때문에 Client에서 W3150에 접속을 시도해도 붙지 않는 것 같습니다.
이때, Lan 케이블을 복원하고 W3150을 Close 시키고, 바로 Listen을 시킨 뒤 Client에서 재접속을 하면 잘 붙습니다.
W3150에서 Lan 케이블이 빠진 상태나 혹은, Lan 케이블이 연결되지 않은 상태를 확인 할 수 있는 방법이 있나요?
이러한 이벤트가 발생했을 때 W3150을 강제로 Close → Listen 해주면 문제가 해결 될 것 같습니다.