connect에 관한 질문 입니다.
글쓴이: merds / 작성시간: 금, 2003/08/01 - 9:38오전
-문제점-
connect()함수를 이용 연결시 블럭되는 경우를 피하기 위해
timeout을 주고 싶습니다 ...알려주세요
(5초정도 연결을 시도하다 답신이 없으면 포기..이런식)
-상세-
진행중인 프로젝트에서
클라이언트에서 "포트스캔"을 클릭하면 서버는 클라이언트에서
열려진 포트를 알려 줍니다.
열린 포트를 알기 위해 단순히 포트당 connect를 시도 합니다.
이런식으로 했을 경우 닫힌경우/열린경우 아무 일 없이 잘 나옵니다
근디 개인 방화벽에서 설정으로 그 포트를 막으면 한 5분정도의 시간이 걸리더군요 ..그래서 connect에서 timeout을 주려고 합니다...
말이 길어 졋군요...여러분의 따뜻한 답변 기달료요
Forums:
역시나 검색 connect timeout
http://bbs.kldp.org/viewtopic.php?t=21634&highlight=connect+timeout
^^;
울랄라~ 호기심 천국~!!
http://www.ezdoum.com
non-blocking 소켓을 생성 하신 후에 connect() 하시면
non-blocking 소켓을 생성 하신 후에 connect() 하시면 완전히 연결이 된 경우( 3-handshaking이 완료 ) 0 리턴됩니다.
-1 리턴의 경우에 errno==EINPROGRESS 인 경우라면 connect에 시간이 걸리는 경우이므로 이때 select, poll등을 사용하여 이 fd가 writable 상태가 될때까지 기다리신 후( 이때 timeout을 지정할 수 있겠죠.. ) getsockopt에 SO_ERROR를 사용하셔서 connect가 완료되었는지 확인하실 수 있습니다.
다음은 connect man page중 관련 부분입니다.
우리 모두 리얼리스트가 되자. 그러나 가슴에 이룰 수 없는 꿈을 가지자
댓글 달기