이 름
socket − 통 신 을 위 해 말 단 (endpoint)를 생 성 한 다 .
사 용 법
#include
<sys/types.h>
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
설 명
Socket 은 통 신 을 위 한 종 점 (endpoint)를 생 성 하 고 디 스 크 립 터 를 반 환 한 다 .
도 메 인 매 개 변 수 는 통 신 도 메 인 을 지 정 한 다 ; 이 것 은 통 신 에 사 용 되 어 질 프 로 토 콜 패 밀 리 를 선 택 한 다 . 이 러 한 프 로 토 콜 패 밀 리 들 은 <sys/socket.h> 에 서 정 의 된 다 . 현 재 쓰 여 지 는 포 맷 은 다 음 을 포 함 한 다 :
소
켓 은 지 시 된 통
신 semantics를 지 정 하
는 type 을 갖 는 다 .
현 재 정 의 된 타
입 은 다 음 과 같
다 :
SOCK_DGRAM
데 이 타 그 램 지 원
SOCK_RAW
raw network protocol 접 근 지 원 .
SOCK_RDM
보 증 을 요 구 하 지 않 는 데 이 타 그 램 레 이 어 지 원 .
SOCK_PACKET
새 로 운 프 로 그 램 에 서 잘 쓰 이 지 않 는 다 ; packet(7) 을 본 다 .
몇 몇 소 켓 타 입 은 모 든 프 로 토 콜 군 에 의 해 구 현 되 어 지 지 않 을 것 이 다 ; 예 를 들 면 , SOCK_SEQPACKET 는 AF_INET 때 문 에 구 현 되 지 않 는 다 .
프 로 토 콜 은 소 켓 을 사 용 하 기 위 해 특 정 프 로 토 콜 을 지 정 한 다 . 싱 글 프 로 토 콜 은 주 어 진 프 로 토 콜 군 안 에 특 정 소 켓 타 입 을 지 원 하 도 록 존 재 한 다 . 그 러 나 , 특 정 프 로 토 콜 이 방 법 으 로 지 정 되 어 야 만 하 는 곳 엔 많 은 프 로 토 콜 이 존 재 가 능 하 다 .
SOCK_STREAM 타 입 의 소 켓 은 full-duplex byte streams이 다 . 그 것 들 은 레 코 드 경 계 를 보 호 하 진 않 는 다 . 스 트 림 소 켓 은 모 든 데 이 타 가 그 것 으 로 송 수 신 되 기 전 에 접 속 상 태 이 어 야 한 다 . 다 른 소 켓 과 의 접 속 은 connect(2) 호 출 로 생 성 한 다 . 한 번 접 속 에 데 이 타 는 read(2) 와 write(2) 호 출 혹 은 send(2) 와 recv(2) 호 출 의 몇 몇 변 수 를 사 용 해 전 송 한 다 . 세 션 이 완 벽 할 때 close(2) 는 실 행 된 다 . Out-of-band 에 이 타 는 또 한 send(2) 의 설 명 대 로 전 송 되 고 recv(2) 의 설 명 대 로 수 신 된 다 .
SOCK_DGRAM 와 SOCK_RAW 소 켓 은 send(2) 호 출 에 지 정 된 correspondents로 데 이 타 그 램 의 송 신 을 허 락 한 다 . 데 이 타 그 램 은 대 개 다 음 데 이 타 그 램 을 반 환 하 는 recvfrom(2) 로 수 신 된 다 .
SOCK_PACKET 은 장 치 드 라 이 버 로 부 터 직 접 raw패 킷 을 받 는 쓰 이 지 않 는 소 켓 타 입 이 다 . 대 신 packet(7) 을 사 용 한 다 .
소 켓 의 작 용 은 소 켓 레 벨 옵 션 에 의 해 제 어 된 다 . 이 러 한 옵 션 들 은 <sys/socket.h> 에 정 의 되 어 있 다 . Setsockopt(2) 와 getsockopt(2) 는 옵 션 을 설 정 하 고 얻 는 데 사 용 된 다 .
반 환 값
에 러 시 , −1이 반 환 된 다 ; 그 밖 의 반 환 값 은 디 스 크 립 터 참 조 소 켓 이 다 .
에 러
EPROTONOSUPPORT
프 로 토 콜 타 입 이 나 지 정 된 프 로 토 콜 은 이 도 메 인 에 서 지 원 되 지 않 는 다 .
ENFILE |
새 로 운 소 켓 구 조 를 지 정 하 기 에 커 널 메 모 리 가 부 족 하 다 . | ||
EMFILE |
프 로 세 스 파 일 테 이 블 이 overflow. | ||
EACCES |
지 정 된 타 입 의 생 성 된 소 켓 이 나 프 로 토 콜 권 한 이 거 부 되 었 다 . |
ENOBUFS or ENOMEM
메 모 리 가 부 족 하 다 . 소 켓 은 프 리 메 모 리 가 생 길 때 까 지 생 성 될 수 없 다 .
EINVAL |
알 려 지 지 않 은 프 로 토 콜 이 나 프 로 토 콜 군 으 로 유 효 하 지 않 다 . |
다 른 에 러 는 프 로 토 콜 모 듈 에 의 해 생 성 된 다 .
호 환
4.4BSD (the socket 함 수 호 출 은 4.2BSD에 서 선 보 였 다 ). 대 개 비 -bsd시 스 템 에 서 는 bsd소 켓 레 이 어 의 클 론 을 지 원 한 다 .
버 그
SOCK_UUCP 는 아 직 구 현 되 지 않 았 다 .
관 련 항 목
accept(2), bind(2), connect(2), getprotoent(3), getsockname(2), getsockopt(2), ioctl(2), listen(2), read(2), recv(2), select(2), send(2), shutdown(2), socketpair(2), write(2)
“An Introductory 4.3 BSD Interprocess Communication Tutorial” is reprinted in UNIX Programmer’s Supplementary Documents Volume 1.
“BSD Interprocess Communication Tutorial” is reprinted in UNIX Programmer’s Supplementary Documents Volume 1.
역 자
ASPLINUX, 2000년 7월 29일