티스토리 뷰


소켓 옵션이란?

  소켓 함수의 기본 동작을 변경할 수 있으며, 이를 이용하여 소켓과 프로토콜 구현 코드에 대한 좀 더 세부적인 제어를 할 수 있게 된다.

 

 소켓 옵션을 설정하는 함수

 int setsockopt(

     SOCK s,    // 옵션을 적용할 소켓

     int level,    // 옵션을 해석하고 처리하는 코드를 나타내며, 옵션 레벨이라 부른다. 소켓코드(SOL_SOKET), IP 프로토콜 코드(IPPROTO_IP), TCP 프로토콜 코드(IPPROTO_TCP)

     int optname, // 옵션 이름

     const char* optval, // 설정할 옵션 값을 담고 있는 버퍼의 주소

     int optlen // optval이 가리키는 버퍼의 크기

 );

 소켓 옵션을 얻어오는 함수

 int getsockopt(

     SOCK s,

     int level,

     int optname,

     char* optval,

     int* optlen

 ); // 각 옵션에 대한 설명은 소켓 옵션을 설정하는 함수를 참고할 것

 

 옵션 레벨과 옵션 이름에 대한 테이블

 SOL_SOCKET

optname

optval

get

set

설명

 SO_BROADCAST  BOOL  O  O  브로드캐스팅 허용
 SO_DONTROUTE  BOOL  O  O  데이터 전송시 라이팅 테이블
 SO_KEEPALIVE  BOOL  O  O  주기적으로 연결 여부 확인
 SO_LINGER  linger{}  O  O  보낼 데이터가 있을 경우 closesocket() 함수 리턴 지연

 SO_SNDBUF

 SO_RCVBUF

 int  O  O  소켓 송/수신 버퍼 크기 설정

 SO_SNDTIMEO

 SO_RCVTIMEO

 int  O  O  send(), recv() 등의 함수에 대한 타임아웃 설정
 SO_REUSEADDR  BOOL  O  O  지역 주소(IP 주소, 포트번호) 재사용 허용

 

IPPROTO_IP

optname

optval

get

set

설명

 IP_HDRINCL  BOOL  O  O  데이터를 보낼 때 IP 헤더를 포함
 IP_TTL  int  O  O  IP 패킷의 TTL(time-to-live) 변경
 IP_MULTICAST_IF  IN_ADDR{}  O  O  멀티캐스트 패킷을 보낼 인터페이스 설정
 IP_MULTICAST_TTL  int  O  O  멀티캐스트 패킷의 TTL 변경

 IP_MULTICAST_LOOP

 BOOL  O  O  멀티캐스트 패킷의 루프백 여부 결정

 IP_ADD_MEMBERSHIP
 IP_DROP_MEMBERSHIP

 ip_mreq{}    O  멀티캐스트 그룹 가입과 탈퇴

 

IPPROTO_TCP

optname

optval

get

set

설명

 TCP_NODELAY  BOOL  O  O  Nagle 알고리즘 작동 중지

 

'Programming > Network' 카테고리의 다른 글

소켓의 입출력 모델 준비  (0) 2011.03.08
Thread 란?  (0) 2011.03.08
소켓이란? NetWork에 대한 첫걸음  (0) 2011.03.08
네트워크 란?  (0) 2011.03.08
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함