C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[5812] Re:Blocking모드에서 소켓상태 감시를...
조재영 [] 2732 읽음    2001-02-28 19:01
접속이 이루어져 있는 컴 전원이 나가버리거나 라인이 죽거나 하는 경우를
알아내는건 불가능 합니다.

나우누리나 하이텔등을 telnet 모드로 사용해보셨다면 일정시간내에
아무런 메세지를 보내주지 않어면 서버에서 짤라버리는것을 보셨을 겁니다.
그래서 telnet어플에 보면 접속유지멘트 같은게 있죠.

이런 식으로 예를 들면 서버가 클라이언트로부터 메세지를 받으면
접속유지 시간을 연장시켜 주는 방법이 있습니다.

예를 들어 5분이라면 5분동안 클라이언트로부터 아무런 메세지를 받지 못했다면
접속이 끊긴상태로 보고 짤라버리는거죠.

그리고 3분 정도 부터 일정 간격으로 클라이언트에 에코메세지를 보내서
클라이언트가 그에 대한 응답을 하게 하는것도 방법입니다.

권선미 님이 쓰신 글 :
: 소켓의 상태 감시를 어떻게 해야하나요..
: Blocking의 경우 request를 하구 response가 올때까지 블러킹이 되잖아요.
: 근데 만약 서버 프로세스가 죽어버리면
: 클라이언트 프로세스는 다시 request를 보내기전까진
: 소켓이 끊어졌는지... 아닌지.. 상태 체크가 안되더라구요..
:
: 타이머를 써서 5초에 한번씩 체크를 하고록
:
: if (socket_name->Active)
:  return;
: else   {
:  Showmessage("Disconnect");
:  opensocket();   ----------->  소켓의 ip, port등을 다시 셋팅하는 것
: }
:
: 이렇게 해서 테스트를 해보니까..
: 서버 프로세스가 죽었는데도...
: 게속 if문에서 socket-name->Active상태로 체크가 되더라구요..
:
: 소켓의 상태감시하는데..
: 스레드를 사용 하시는 분이 있다고 들었는데..
: 어떻게 하는 건가여?
:
: 정말 급한 문제거든여..
: 좀 갈켜 주세요....!!!!

+ -

관련 글 리스트
5809 Blocking모드에서 소켓상태 감시를... 권선미 2699 2001/02/28
5812     Re:Blocking모드에서 소켓상태 감시를... 조재영 2732 2001/02/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.