GETSOCKOPT(2)

이름
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@asp-linux.co.kr>, 2000년 7월 29일