티스토리 뷰
소켓 옵션이란?
소켓 함수의 기본 동작을 변경할 수 있으며, 이를 이용하여 소켓과 프로토콜 구현 코드에 대한 좀 더 세부적인 제어를 할 수 있게 된다.
소켓 옵션을 설정하는 함수
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_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 |