socket 옵션

sz L·1일 전
0

통신

목록 보기
15/15

SOCKET 생성 함수는

#include <sys/socket.h>

int socket(int domain, int type, int protocol);
  • domain: 통신 도메인(주소 체계) 지정. 예: IPv4, IPv6, 로컬 소켓 등.
  • type: 통신 방식(소켓 유형) 지정. 예: 스트림, 데이터그램 등.
  • protocol: 특정 프로토콜을 지정. 보통 0으로 설정하면 기본 프로토콜이 선택됨

SOCKET 옵션 관리 함수는

#include <sys/socket.h>

int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);
  • sockfd: 설정하려는 소켓의 파일 디스크립터.
  • level: 옵션의 적용 수준.
    • SOL_SOCKET: 소켓 레벨 옵션.
    • IPPROTO_TCP: TCP 프로토콜 관련 옵션.
    • IPPROTO_IP, IPPROTO_IPV6: IP 프로토콜 관련 옵션.
  • optname: 설정하려는 옵션 이름. (예: SO_REUSEADDR, SO_KEEPALIVE 등)
  • optval: 설정하려는 옵션 값을 가리키는 포인터.
    • 옵션 값은 자료형에 맞는 값을 사용해야 합니다. (예: int, 구조체 등)
  • optlen: optval의 크기(바이트 단위).

성공 시 0 반환
실패 시 -1 or errno 반환

SOL_SOCKET 레벨 옵션

  • SO_REUSEADDR
    이미 사용 중이거나 TIME_WAIT 상태의 포트를 재사용 가능하도록 설정
  • SO_KEETALIVE
    TCP Keep-Alive 메시지 활성화
  • SO_RCVBUF / SO_SNDBUF
    수신 및 송신 버퍼 크기 설정
    -SO_LINGER
    소켓 종료 시 남아있는 데이터를 처리할 지연 동작을 설정
    IPPROTO_TCP 레벨 옵션
  • TCP_NODELAY
    Nagle 알고리즘 비활성화(데이터를 즉시 전송)
  • TCP_KEEPIDLE, TCP_KEETINTVL, TCP_KEETCNT
    Keet-Alive 설정을 세부 조정
    IPPROTO_IP 및 IPPROTO_IPV6 레벨 옵션
  • IP_TTL
    IPv4 패킷의 TTL(Time-To-Live) 값을 설정
  • IP_MULTICAST_TTL
    멀티캐스트 패킷의 TTL 값을 설정
profile
가랑비는 맞는다 하지만 폭풍은 내 것이야

0개의 댓글