빨간색코딩

소켓 옵션과 관련 API 본문

C

소켓 옵션과 관련 API

빨간색소년 2017. 4. 4. 16:46

1. 소켓의 옵션

아래는 프로토콜 레벨과 옵션 이름들이다.

1-1. SOL_SOCKET : 일반적인 옵션

  • SO_SNDBUF : 송신버퍼 크기 설정
  • SO_RCVBUF : 수신버퍼 크기 설정
  • SO_REUSEADDR : 지역 주소(IP,Port) 재사용여부
  • SO_KEEPALIVE : 주기적으로 연결 여부 확인
  • SO_BROADCAST : 브로드캐스팅 허용여부
  • SO_DONTROUTE : 라우팅 테이블 참조과정 생략여부
  • SO_OOBINLINE
  • SO_ERROR
  • SO_TYPE : 소켓의 타입(변경 불가)

1-2. IPPROTO_IP : IP 패킷 관련

  • IP_TOS : Type of Service 변경
  • IP_TTL : Time-To-Live 변경
  • IP_MULTICAST_TTL : 멀티캐스트 패킷의 TTL 변경
  • IP_MULTICAST_LOOP : 멀티캐스트 패킷의 루프백 여부
  • IP_MULTICAST_IF : 멀티캐스트 패킷을 보낼 인터페이스 설정

1-3. IPPROTO_TCP : TCP관련

  • TCP_KEEPALIVE : keep alive 시간 간격 지정
  • TCP_NODELAY : Nagle 알고리즘 사용 여
  • TCP_MAXSEG : TCP 최대 세그먼트 지정

2. 소켓 옵션 관련 API

#include <sys/socket.h>

2-1. 소켓 옵션의 설정상태 참조

int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen);

2-1-1. 반환값

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

2-1-2. 인자

  • sock: 소켓 파일 디스크립터 전달
  • level: 확인할 옵션의 프로토콜 레벨 전달
  • optname: 옵션이름 전달
  • optval: 참조확인 결과 저장을 위한 버퍼의 주소 값 전달
  • optlen: 4번째 인자의 버퍼크기를 담고 있는 변수의 주소 값 전달

2-2. 소켓 옵션의 설정상태 변경

int setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen);

2-2-1. 반환값

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

2-2-2. 인자

  • sock: 소켓 파일 디스크립터 전달
  • level: 변경할 옵션의 프로토콜 레벨 전달
  • optname: 옵션이름 전달
  • optval: 변경할 옵션정보를 저장한 버퍼의 주소 값 전달
  • optlen: 4번째 인자의 버퍼크기 전달


'C' 카테고리의 다른 글

make 유틸리티  (0) 2017.05.20
hostent 구조체, 도메인 관련 API  (0) 2017.04.04
아두이노 bluetooth  (0) 2017.04.02
아두이노 Digita I/O & Analog I/O  (0) 2017.04.02
TCP소켓 Half-close 기법  (0) 2017.03.28
Comments