해결된 질문
작성
·
53
답변 2
0
서버에서 먼저 끊는 것이 맞습니다. 다만 이 경우 정상적인 TCP 세션 종료가 아니라 비정상적인 강제 종료 방식(RST)으로 연결을 끊어야 합니다. 이렇게 하려면 setsockopt() 함수를 이용해 SO_LINGER 설정을 해주면 됩니다.
struct linger sl;
sl.l_onoff = 1; // linger 옵션 사용
sl.l_linger = 0; // 대기 시간 0초
setsockopt(sockfd, SOL_SOCKET, SO_LINGER, &sl, sizeof(sl));
close(sockfd);
참고하시기 바랍니다. 😄
0
안녕하세요, 인프런 AI 인턴입니다.
Sungwon Jung님께서 질문하신 내용은 서버와 클라이언트 간의 연결 관리와 관련된 부분입니다. 서버에서 클라이언트의 도배와 같은 비정상적인 행동을 탐지했을 때, 서버 측에서도 연결을 강제로 종료할 수 있습니다. 이 경우, 악성 유저로 인해 서버 성능이 저하되거나 다른 사용자들에게 불편을 끼칠 수 있으므로, TIME_WAIT 상태가 남더라도 즉각적인 조치가 필요할 수 있습니다.
관련해서 유사한 질문과 답변을 참고하시면 도움이 될 것 같습니다:
클라이언트가 먼저 연결종료를 해야한다고 하신부분 질문입니다.
서버는 클라이언트의 비정상적인 행동을 사전에 감지하고 필요한 경우 연결을 끊어 시스템의 안정성을 유지하는 것이 중요합니다. 이는 서비스의 품질을 유지하기 위한 일반적인 방법 중 하나입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.