리눅스 소켓에 관해 질문입니다.
글쓴이: kknd8080 / 작성시간: 토, 2009/09/19 - 11:49오전
소켓연결을 한상태 입니다. 이상태에서 인터넷이 만약 끈어 젓을경우
소켓이 인터넷이 끈어젓다는것을 알수 잇게 하는방법이 없을까요?
그래서 소켓을 디스컨넥트하고 나중에 다시 인터넷이 연결되엇다는것을
알아내서 다시 연결해주고 싶은데요;
사설이 길엇지만 프로그램에 재접속 루틴을 만들려고 합니다.
리눅스 자체에서 인터넷 상태에 대해서 프로그램에 보내주는 시그널이 있는지 알고싶구요;
인터넷이 끈어젓다는것을 알수 있는 방법을 알고 싶습니다.
Forums:
논리적인 끊김은
논리적인 끊김은 자동으로 tcp의 알고리즘에 따라서 사실을 알려줍니다.
하지만 물리적으로 끊김(랜선 뽑거나 컴퓨터가 리붓되거나 다운되거나 하는 것)은 알아낼 방법이 없습니다.
알아내기 위해서는 주기적으로 통신을 해서 어느정도 응답이 없으면 끊겼다는 것으로
판단 해야합니다. 이것을 tcp에서 해주는 것이 있는데 기간이 좀 길고 이 기간을 변경하면
시스템 전체 프로그램에 영향을 줍니다. 따라서 이를 직접 구현하시면 됩니다.
매 패킷 또는 특정 패킷을 미리 정해진 시간에 한번씩 전송을하고 정해진 시간내에 응답이 안오면
끊겼다고 판단하고 정리를 해주시면 됩니다. 여기서 정해진 시간은 적당히 알아서 정하시면 됩니다.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
답변해주셔서 감사합니다.
tcp 에서 해주는 것이 무엇인지 알수잇을가요?
일정시간에 패킷을 보내는것은 생각해밧지만 중간에 갑자기 인터넷이 연결되어 버린다면 그동안 쌓여잇던 데이터가 일순간에 들어와서
프로그램이 멈춰버립니다.
tcp에서 해주는것을 알수 있엇으면 좋겟네요
제가 본 것이 있다면...
Bridge 모듈에 br_notify.c 소스에 보시면 해당 이벤트가 일어났을 때
이벤트 처리를 해줄수는 있습니다.
아마도 TCP에서도 그쪽 부분에 손을 되면 되지않을까? 하고 조심스럽게 생각해봅니다 -ㅅ-;;
댓글 달기