TCP/IT 소켓통신 질문드립니다.

clapmin의 이미지

현재 우분투를 모바일 어플리케이션 서버로 사용하고 있습니다.

아직 구현 단계라서 서버를 껏다 다시 컴파일하고 실행하는 경우가 많습니다.

그런데, 클라이언트가 접속된 상태에서 서버를 끄고 컴파일하고 바로실행하는 경우에는 클라이언트가

종료가 아직 안된상태 fin_wait_2로 표시되어있어서 서버가 실행이 바로 안되고 특정시간이 지난 다음에 실행 되더라구요.

혹시 이 부분에 대해서 fin_wait_2상태를 바로 벗어나는 방법이나 클라이언트를 모두 연결 종료 시킨 후 서버를 끄는 방법에 대해서 여쭤보고 싶네요 ㅎㅎ^^

그럼 즐거운 하루 되세요~

twinwings의 이미지

서버가 종료되어도 일정시간 운영체제에서 포트 정보를 갱신하지 않고 유지합니다.

소켓 옵션에 "재사용" 옵션(SO_REUSEADDR) 넣어서 사용해 보세요.

int enable = 1;
if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof(int)) < 0)
    error("setsockopt(SO_REUSEADDR) failed");
익명 사용자의 이미지

테스트 해보니까 잘되네요.
오랜 시간 고민 했는데 정말 감사합니다.