socket 프로그래밍 초보 질문.. send 에러에 대해서..
글쓴이: psjcap / 작성시간: 일, 2004/02/01 - 9:59오후
socket 프로그래밍을 하는데..
주기적으로 어떤 작업을 해야하는 관계로 block이 될 수가 없어서..
send. recv 하기 전에 select 함수를 통해서 send가 가능한지 확인하고..
send, recv를 수행하도록 하였습니다..
그런데 랜선을 뽑은 경우 꽤 오랜 시간 네트웍이 끊긴지를 모르더군요..
어떤 때는 실제로 랜선을 다시 꼽을 때 까지 connect이 유지되는 경우도 있더군요..
1. 왜 send, recv 에러를 감지하는데 시간이 오래 걸리나요..??
2. 랜선 뽑은걸 바로 알 순 없나요..?? (driver 레벨에서 처리한다던가 하는거 말고..)
Forums:
바로 아는 방법은 없습니다..
TCP 커넥션이란게 어차피..
IP:PORT ------ IP:PORT
의 매핑을 각 호스트에서 저장하고 있는 것이 불과합니다.
따라서 하드웨어 레벨에서 fail이 발생한 것에 대해서 완전히 detect할 수 없습니다.
필요한 기능은 구현하시려면..
꾸준히 상대노드와 HeartBeat 메시지를 주고 받으며
살아 있는 지를 체크해야 합니다.
===============
Vas Rel Por
하드웨어에서 체크하는 것이 아마도 heartbeat라고 하는데이것은
하드웨어에서 체크하는 것이 아마도 heartbeat라고 하는데
이것은 제가 알기론 2시간 정도 간격으로 체크 한다고 알고 있습니다.
(시간은 틀릴수 있습니다. 아무튼 매우 긴 시간일 겁니다. 프로그램에서
10분만 넘어가도 괘 긴 시간 아닌가요?)
이 시간을 지나면 끊김을 알 수 있다는 것이죠..
상대편에서 connect 를 유지 하고, 네트웍 선을 뽑은 경우나
파워를 갑자기 내려 버리면, 나는 그것을 모르죠.. 저 heartbeat로
체크해 보기 전에...
heartbeat의 시간을 조절할수 있다고 알고 있습니다만, 어떻게 하는지
기억이 안나고, 이것은 시스템에 연결된 모든 소켓에 대해 다 적용된다고
하니, 시간이 짧다면, 부하가 될수도 있겠지요
위에 분이 말씀하신것 처럼 Alive 상태를 체크해 보는 소프트웨어적인 루틴을 구현하시는게 아마도 맘에 편하실것 같습니다.
댓글 달기