[완료] setitimer 함수 와 connect 함수의 관계?
글쓴이: bluepuki / 작성시간: 목, 2008/08/28 - 9:55오후
time_value.it_interval.tv_sec = 0;
time_value.it_interval.tv_usec = 0;
time_value.it_value.tv_sec = 0;
time_value.it_value.tv_usec = CONNECT_INTR_VAL;
status = setitimer (ITIMER_REAL, &time_value, NULL);
status = connect (socket_fd, (const struct sockaddr*)&node_tcp_addr,
sizeof (struct sockaddr_in));
printf("[DEBUG] connect = %d \n ", status);
=======================================================
위와 같은 소스가 있습니다.
setitimer 함수가 connect 에 미치는 영향은 무었인가요?
CONNECT_INTR_VAL 값동안 connect 함수가 연결 대기하는건 가요?
CONNECT_INTR_VAL 값을 늘리니 connect 성공 하던데요.. ???
속도는 19200bps이고 선로 상태는 안좋은 전화선 에서 시험 했습니다.
감사합니다.
Forums:
ITIMER_REAL 로 지정을
ITIMER_REAL 로 지정을 하셨으니, 지정한 시간 후 SIGALRM 이 올 것입니다. connect(2) 함수가 어떤 값을 리턴하는지를 살펴보아야 하겠지만, 아마 connect(2) 함수내에서 signal 을 받고 EINTR 을 리턴하지 않았을까 생각됩니다.
먼저 답변
먼저 답변 감사합니다. ^^
지정한 시간 후에 SIGALRM 이 온다는것이 SIGALRM 이 오기전까지는 connect 함수가 동작 하지 않는건가요?
아니면 connect 함수가 실행되고 지정한 시간까지 연결 대기를 하는건가요?(지정시간까지 연결안되면 실패?)
궁금증을 정리해 보면
지정시간을 10초 했을때와 250ms 했을때 connect 함수가 어떤 영향을 받는건지가 궁금합니다.
지정시간을 10초 했을때는 connect 성공하고 250ms 했을때는 연결실패 했거든요~~
다시한번 답변 부탁드립니다. linux 프로그래밍 개념이 없어서... ㅡ.ㅡ
감사합니다.
아닙니다. 아마도
아닙니다. 아마도 SIGALRM 이 오기전까지 OS 는 connect(2) 함수를 열심히 실행하고 있었을 겁니다. 하지만 연결이 성공되기 전에 signal이 왔기 때문에 완료하지 못하고 그 상태에서 함수가 리턴된 것입니다.
10초로 했을 때는 충분한 시간이 주어졌기 때문에 성공하였고, 250ms때는 시간이 짧아서 연결 실패한 것입니다.
아~ 역시 그렇군요...
아~ 역시 그렇군요...
기능은 되지만 원인을 명확히 알지 못해 찜찜했었는데..
큰 도움 되었네요.. ^^
감사합니다.
댓글 달기