소켓 옵션과 관련 API
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번째 인자의 버퍼크기 전달
출처: https://sjh836.tistory.com/51?category=680969 [빨간색코딩]
'기타 > C언어' 카테고리의 다른 글
make 유틸리티 (0) | 2021.03.22 |
---|---|
hostent 구조체, 도메인 관련 API (0) | 2021.03.22 |
TCP소켓 Half-close 기법 (0) | 2021.03.22 |
(UDP소켓 프로그래밍) socket.h API, connected UDP소켓 (0) | 2021.03.22 |
표준 스트림 (표준출력과 표준오류의 차이) (0) | 2021.03.22 |
구조체의 메모리 저장방식 (0) | 2021.03.22 |
(TCP소켓 프로그래밍) socket.h API, 네트워크 바이트 순서 (0) | 2021.03.22 |
[C] 퀵정렬 예제 정리 (0) | 2019.07.26 |