클라이언트 접속 상태 확인 궁금 사항


#1

w7200 evm 사용하고 있는 사용자 입니다…

클라이언트 접속 상태 확인 하여 궁금 사항 있어서요…

조건

  1. w7200 : 클라이언트로 접속
  2. pc 서버로 로 접속

서버를 열고 클라이언트 접속 시도 하면 접속 OK
이상태에서 서버를 정상적으로 종료 하고 다시 접속을 시도 해도 OK
하지만 접속된 상태에서 서버 측이 예기치 못한 상황이 발생하면 (PC전원 OFF, 케이블 빠짐 두가지 상황)이 발생 하게
되면 클라이언트쪽에서 아무런 반응을 보이지 못하는듯 합니다??
위와 같이 예기치 못한 상황이 발생한다음에 제공되는 함수중 int8 GetTCPSocketStatus() 함수를 이용 하여 현재 접속 상태를
읽어오게 되면 소켓이 연결 되어 있는것으로 나옵니다… (리턴 '4’번 -> SOCK_ESTABLISHED)
위와 같은 상황이 발생했을떼 EVM 보에에서 현재 접속이 끊겼다는 것을 판별 하고 싶은데… 잘 되지 않습니다…
혹시… 위와 같은 상황이 발생하게 되었을때… 어떤식으로 해야 하는지 자문 구합니다…~~

단 클라이언트에에서 서버측으로 일정 주기 마다 메세지를 보내서 서버가 접속 되었는지 않되었는지 확인하는것은 현재 불가능한 상황입니다…


#2

제가 자료를 잘 찾아 보지 않았군요 – w5200 데이터 시트
parallax.com/sites/default/f … asheet.pdf
문서에 있는 내용중 22 페이지 PHYSTATUS Register 내용을 주기 적으로 읽으면 접속 상태(하드웨어 연결 상태)를 확인 할 수 있는듯 하네요.


#3

안녕하세요.

PHY status를 체크하는 방법도 하나의 방법일 수 있지만,
이 경우 5200이 스위치나 라우터에 물려 있을 경우 서버측의 연결 끊김을 판단 할 수 없습니다.

가장 좋은 방법은 데이터를 보내보는 겁니다. 데이터를 보내게 되면 timer가 동작을 시작하고 time out이 발생하면
자동으로 close 상태로 됩니다. 서버측의 연결이 끊기면 ACK를 받지 못하기 때문에 time out이 발생하게 됩니다.

감사합니다.
전혁진 드림.


#4

이러한 경우에 대응하기 위해서 만들어진 기능이 KEEPALIVE 기능입니다.
위즈네트의 예제 코드에서 KEEPALIVE 기능을 참고하세요.