글
■ 소켓의 세부사항을 조절하기 위한 함수.
(1) 소켓 옵션
: 네트워크 환경은 매우 다양하며, 예측불가하다. 때문에 네트워크 프로그램의 종류에 따라서 소켓의 세부사항들을 조절해야 하는 경우가 발생하는데, 이런한 소켓옵션 설정을 위해 소켓은 getsockopt()와 setsockopt() 두개의 함수를 제공한다.
(2) setsockopt()
: 소켓의 옵션값을 설정하는 함수.
● 함수원형
int setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen)
● 리턴값
- 성공 시 : 0, 실패 시 : -1
● 옵션
- s : 옵션변경을 위한 소켓의 파일 디스크립터
- level : 변경할 소켓 옵션의 레벨
- optname : 변경할 옵션의 이름
- optval : 변경할 옵션정보를 저장한 버퍼의 포인터
- optlen : optval 버퍼의 크기
○ 소켓 옵션 레벨
- 소켓 레벨에서의 처리 (SOL_SOCKET)
: 송수신 버퍼의 크기 조절, 브로드캐스팅 허용, 연결여부 확인 등
- 프로토콜 레벨에서의 처리 (OPPROTO_IP, IPPROTO_TCP)
: IP헤더 포함여부 결정, IP패킷의 TTL값 변경, Nagle 알고리즘 작동 정지 등
○ 옵션 및 데이터형
- SOL_SOCKET 레벨에서 사용할 수 있는 옵션과 데이터 형
- IPPROTO_TCP 레벨에서 사용할 수 있는 옵션과 데이터 형
(3) getsockopt()
: 소켓에 설정된 값을 얻어오는 함수.
● 함수원형
int getsockopt(int sock, int level, int optname, void *optval, socklen_t optlen)
● 리턴값
- 성공 시 : 0, 실패 시 : -1
● 옵션
- s : 옵션변경을 위한 소켓의 파일 디스크립터
- level : 변경할 소켓 옵션의 레벨
- optname : 변경할 옵션의 이름
- optval : 확인결과의 저장을 위한 버퍼의 포인터
- optlen : optval 버퍼의 크기를 담고있는 포인터
※ 참고자료 : http://sharkynara.egloos.com/1103575
'P rogramming > Socket' 카테고리의 다른 글
7. 연결요청 수락 - accept() (1) | 2012.03.06 |
---|---|
6. 연결 요청 대기 - listen() (0) | 2012.03.06 |
4. 주소정보 할당 - bind() (1) | 2012.02.29 |
3. 주소 정보의 표현 (sockaddr / sockaddr_in) (4) | 2012.02.28 |
2. 프로토콜 정의 및 소켓 생성 - socket() (0) | 2012.02.27 |
RECENT COMMENT