이 름
getsockopt, setsockopt − 소 켓 의 옵 션 을 얻 고 설 정 한 다 .
사 용 법
#include
<sys/types.h>
#include <sys/socket.h>
int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen);
int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);
설 명
Getsockopt 와 setsockopt 는 소 켓 과 일 치 하 는 manipulate the options 을 다 룬 다 . 옵 션 은 다 중 프 로 토 콜 레 벨 에 존 재 할 런 지 모 른 다 ; 그 프 로 토 콜 레 벨 들 은 항 상 최 상 의 소 켓 레 벨 에 있 다 .
소 켓 옵 션 을 조 작 할 때 , 옵 션 지 정 과 옵 션 의 이 름 이 있 는 레 벨 은 지 정 되 어 야 한 다 . 소 켓 레 벨 에 서 옵 션 을 조 작 하 기 위 해 , level 은 SOL_SOCKET 처 럼 지 정 되 어 야 한 다 .
매 개 변 수 optval 와 optlen 는 setsockopt 를 위 해 옵 션 값 을 접 근 하 곤 한 다 . getsockopt 때 문 에 그 것 들 은 요 청 한 옵 션 이 반 환 되 는 동 안 값 이 있 는 버 퍼 를 확 인 한 다 . getsockopt, 때 문 에 optlen 는 optval 가 처 음 에 가 리 키 는 버 퍼 의 크 기 를 포 함 하 는 결 과 값 매 개 인 수 이 고 , 반 환 값 의 실 제 크 기 를 나 타 내 는 반 환 을 수 정 한 다 . 옵 션 값 이 제 공 되 거 나 반 환 되 지 않 는 다 면 , optval 는 NULL값 일 런 지 모 른 다 .
Optname 와 다 른 지 정 된 옵 션 은 해 석 을 위 해 적 절 한 프 로 토 콜 모 듈 에 해 석 이 안 되 는 것 은 넘 어 간 다 . 파 일 <sys/socket.h> 은 아 래 설 명 된 소 켓 레 벨 옵 션 을 위 한 정 의 를 포 함 한 다 . 다 른 프 로 토 콜 레 벨 에 옵 션 은 포 맷 과 이 름 이 다 르 다 ; 메 뉴 얼 의 세 션 4에 적 절 한 기 재 사 항 을 참 고 한 다 .
대 부 분 소 켓 -레 벨 옵 션 은 optval 를 위 해 int 배 개 변 수 사 용 한 다 .
setsockopt 를 위 해 , 매 개 변 수 는 boolean옵 션 이 가 능 하 기 위 해 0이 아 니 어 야 한 다 . 혹 은 옵 션 이 불 가 능 하 면 0이 다 .
유 효 소 켓 옵 션 의 디 스 크 립 터 는 socket(7) 과 적 당 한 프 로 토 콜 맨 페 이 지 를 본 다 ..
반 환 값
성 공 시 , 0이 반 환 된 다 . 실 패 시 , -1이 반 환 되 고 , errno 는 적 절 히 설 정 된 다 .
에 러
EBADF |
인 수 s 는 유 효 한 디 스 크 립 터 가 아 니 다 . |
ENOTSOCK
인 수 s 는 소 켓 이 아 니 고 , 파 일 이 다 .
ENOPROTOOPT
옵 션 은 지 정 된 레 벨 에 알 려 지 지 않 았 다 .
EFAULT |
The address pointed to by optval 가 가 리 키 는 주 소 는 프 로 세 스 주 소 공 간 의 유 효 한 부 분 이 아 니 다 . getsockopt 때 문 에 optlen 가 프 로 세 스 주 소 공 간 의 유 효 한 부 분 이 아 니 라 면 , 이 에 러 는 또 한 반 환 될 런 지 모 른 다 . |
호 환
SVr4, 4.4BSD (이 러 한 시 스 템 호 출 은 4.2BSD에 서 처 음 보 였 다 ). SVr4 는 추 가 적 으 로 ENOMEM와 ENOSR 에 러 코 드 를 문 서 화 했 지 만 , SO_SNDLOWAT, SO_RCVLOWAT, SO_SNDTIMEO, SO_RCVTIMEO 옵 션 은 문 서 화 되 지 않 았 다 .
주 의
getsockopt 와 setsockopt 의 다 섯 번 째 인 수 는 실 제 int [*]에 있 다 . 초 안 표 준 (draft standard)는 아 직 채 택 되 지 않 았 지 만 , glibc2는 이 미 따 르 고 있 고 , socklen_t [*]를 갖 는 다 . accept(2) 를 본 다 .
버 그
소 켓 옵 션 의 다 수 는 시 스 템 의 저 수 준 레 벨 에 서 다 뤄 져 야 한 다 .
관 련 항 목
ioctl(2), socket(2), getprotoent(3), protocols(5), socket(7), unix(7), tcp(7)
역 자
ASPLINUX<man [AT] asp-linux.kr>, 2000년 7월 29일