728x90
- 09-1 소켓의 옵션과 입출력 버퍼의 크기
- 소켓의 다양한 옵션
- SQL_SOCKET
- SO_SNDBUF / get 0 / set 0
- SO_RCVBUF / get 0 /set 0
- SO_REUSEADDr / get 0 / set 0
- SO_KEEPALIVE /get 0 / set 0
- SO_BROADCAST / get 0 / set 0
- SO_DONTROUTE / get 0 / set 0
- SO_OOBINLINE / get 0 / set 0
- SO_ERROR / get 0 / set x
- SO_TYPE / get 0 / set x
- IPPROTO_IP
- IP_TOS / get 0 / set 0
- IP_TTL / get 0 / set 0
- IPMULTICAST_TTL / get 0 / set 0
- IP_MULTICAST _LOOP / get 0 / set 0
- IPMULTICAST_IF / get 0 / set 0
- IPPROTO_TCP
- TCP_KEEPALIVE / get 0 / set 0
- TCP_NODELAY / get 0 / set 0
- TCP_MAXSEG / get 0 / set 0
- 소켓 옵션은 위처럼 계층별로 분류된다. IPPROTO_IP 레벨의 옵션들은 IP 프로토콜에 관련된 사항들이며 IPPROTO_TCP레벨의 옵션들은 TCP프로토콜에 관련된 사항들이다 그리고 SOL_SOCEKT 레벨의 옵션들은 소켓에 대한 가장 일반적인 옵션들로 생각하면된다.
- getsockopt & setsockopt
- 거의 모든 옵션은 설정상태의 참조 (get ) 및 변경 (set ) 이가능하다 (물론 참조만, 그리고 설정만 가능한 옵션도 있다) 그리고 옵션의 참조 및 변경에는 다음 두 함수를 사용한다.
- #include< sys/socket.h>
- int getsockopt ( int sock, int level, int optname, void *optval, socklen_t *optlen);
- -> 성공시 0 실패시 -1 반환
- sock : 옵션확인을 위한 소켓의 파일 디스크립터 전달
- level : 확인할 옵션의 프로토콜 레벨 전달.
- optname : 확인할 옵션의 이름 전달.
- optval : 확인결과의 저장을 위한 버퍼의 주소 값 전달
- optlen : 네번째 매개변수 optval로 전달된 주소값의 버퍼 크기를 담고 있는 변수의 주소 값 전달 함수호출이 완료되면 이 변수에는 네 번째 인자를 통해 반환된 옵션 정보의 크기가 바이트 단위로 계산되어 저장된다.
- 소켓의 옵션을 변경할때 호출하는 함수는 아래와 같다.
- #include <sys/socket.h>
- int setsockopt( int sock, int level, int optname, const void *optval, socklen_t optlen);
- -> 성공시 0 실패시 -1 반환
- sock : 옵션변경을 위한 소켓의 파일 디스크립터 전달
- level: 변경할옵션의 프로토콜 레벨 전달.
- optname : 변경할 옵션의 이름 전달
- optval : 변경할 옵션정보를 저장한 버퍼의 주소값 전달
- optlen : 네 번째 매개변수 optval로 전달된 옵션정보의 바이트 단위 크기 전달
728x90
'책 > 윤성우 TCPIP' 카테고리의 다른 글
09-2 : SO_REUSEADDR (0) | 2020.12.12 |
---|---|
09-1 소켓의 옵션과 입출력 버퍼의 크기 (2) (0) | 2020.12.11 |
chapter 08 -2 , ip주소와 도메인 이름 사이의 변환 (3) (0) | 2020.12.09 |
< 08-2 : IP 주소와 도메인 이름 사이의 변환 예제 > (0) | 2020.12.08 |
Chapter 08 도메인 이름과 인터넷 주소 (0) | 2020.12.07 |