connect 실패시..
글쓴이: psjcap / 작성시간: 목, 2004/08/05 - 11:12오전
socket으로 connect할 때..
socket -> bind -> connect 이런순서로 하죠..
그런데 만약.. 여기서 connect 실패했을 경우..
실패한 socket에 대하여 close를 반드시 해 주어야 하나요..??
socket->bind->connect -> 실패하면 다시 connect 시도
요런 식으로 해야 할지..
socket->bind->connect -> 실패하면 close 후 다시 socket->bind->connect 수행
요런식으로 해야 할지..
전 항상 두번째 방법으로 했는데..
다른 분이 만든 소스를 보니 첫번째 방법처럼 해 놓았더군요..
근데.. Blocking모드인데.. 가끔 errno에 EISCONN가 할당되어져서..
혹시 connect 실패한 소켓으로 계속 시도를 해서 그런것이 아닌가 해서요..
그럼 좋은 하루 되셔요..^^
Forums:
음...
클라이언트인가요?
목적에 의해서 bind를 해줘도 되겠지만, 머~~
아무튼, connect의 리턴값은 성공했을 때, socket descriptor number입니다.
리턴값을 적절히 보고 처리해 주면 되겠네요(errno를 보고)
보통 파일 open 할 때와 마찬가지로 리턴되지 않은 file descriptor를
close(); 해줄 필요가 없듯이 이것도 필요없다고 생각합니다.
H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!
connect 성공시 리턴 값은..
man page 보면..(solaris 입니다..)
RETURN VALUES
If the connection or binding succeeds, 0 is returned. Oth-
erwise, -1 is returned and sets errno to indicate the error.
이렇게 나옵니다..
connect 성공 시 return 값은 socket descriptor가 아닌데요..
헉!
죄송합니다. ㅡㅡ;
제가 헷갈렸네요. ㅜㅜ;
더위 먹었나 보군요.
제가 질문을 제대로 안 읽었군요. *^^*
스티븐슨의 책을보면 여러번 connect();시에 실패하면 close(); 시키는군요.
H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!
댓글 달기