네트워크 프로그래밍 CH7. 소켓 종료

Alpha, Orderly·2023년 3월 27일
0

TCP

close / closesocket 함수

  • 소켓의 완전소멸 >> 더이상 입출력 불가능
  • 상대방의 상태와는 관련 없는 일방적인 종료
  • 상대 호스트의 송수신이 덜 끝났을시 문제가 된다.

Active / Passive close

  • Active close : 연결 종료를 처음 요청
  • Passive close : 연결 요청을 받은 쪽
  • 두번째 FIN 이후 FIN을 받은 쪽에서 FIN-ACK를 보내는데, 이 ACK 가 손실될 가능성을 방지하기 위해 FIN-ACK를 보내고 잠시 기다린다.

Half-close

  • 보내는것만 닫거나 받는것만 닫거나
  • 상대방도 종료를 원하는지 확인되지 않다면, 출력 스트림만 종료한다.
  • 우아한 종료라 부른다.

shutdown 함수

#include <sys/socket.h>

int shutdown(int sock, int howto);

성공시 0, 실패시 -1 반환

sock - 종료할 소켓 파일디스크립터
howto - 종료방법에 대한 정보 전달
	SHUT_RD - 입력 스트림 종료
    SHUT_WR - 출력스트림 종료
    SHUT_RDWR - 입출력 스트림 종료
  • close 함수 호출시 상대 소켓으로 EOF가 전달된다.
  • 출력 스트림만 종료해도 EOF 전달 -> 상대 호스트의 종료를 기다린다.

profile
만능 컴덕후 겸 번지 팬

0개의 댓글