connect timeout 설정 문제
TCP socket을 써서 server에 connect할때
timeout을 구현하려고 alarm을 사용해 보려합니다.
======================================
signal(SIGALRM, socket_timeout);
alarm(1);
state = connect(sockfd, (struct sockaddr *)&address, len);
if (state < 0) {
alarm(0);
return(-1);
}
alarm(0);
....
나중에 socket_timeout 함수만 구현해주면 끝나염..
========================================
이렇게 해보려 하는데, connect에서 block되면 더이상 진행되지 않을꺼같은 생각이 드는군요.
그렇다면, alarm이 signal을 발생시키면서 socket_timeout함수를 콜해주면, 그다음은 어떻게 되는거죠?
connect는 블럭된 상태에서 다른 thread가생성되면서 socket_timeout 함수가 콜 되는건가요? 아니면 지금 진행중인 connect가 멈춘다음에 socket_timeout이 콜이 되는건가요??
한가지 더 질문있습니다.
timeout은 이렇게 간단하게 해결한다 치고, connect가 비정상적으로 종료(전송중에..)된건 어떻게 알 수 있나요? 궁금합니다. 처리할 수 있는 방법을 알려주세요.
암담합니다.
http://www.joinc.co.kr/modules/moniwiki/
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Code_C_connectWithTimeout
참고하세요^^
------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.
답변 감사합니다. timeout에 대한 것은 약간 공부하면 될것
답변 감사합니다.
timeout에 대한 것은 약간 공부하면 될것 같은데, connection이 끊어지는 것에 대한 대비는 되지 않는것 같습니다.
Connection이 갑자기 끊어지는 것에 대한 처리는 어떻게 하는게 좋을까요? 답변 부탁드립니다.
시그널 함수 사용
시그널 함수로 SIGPIPE를 처리하시면 될 것 같습니다.
참고할 수 있는 내용이 있더군요.
http://bbs.kldp.org/viewtopic.php?t=50877
댓글 달기