socket 통신을 위한 socket descriptor(또는 file descriptor)를 생성하는 함수
사용법
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
설명
int domain
Protocol 계열(Protocol Family)을 설정합니다.
Protocol Family는 <sys/socket.h>에 정의되어 있습니다.
Protocol Family는 AF__, PF__의 상수로 선언되어 있으며, AF__와 PF__는 같은 값입니다.
PF__는 하위 호환성을 유지하기 <sys/types.h>에 정의되어 있으며, AF__를 사용하길 권장합니다. (PF_*를 사용하지 않는다면, #include<sys/types.h>는 필요없음.)
AF_INET : IPv4 기반의 internet protocol을 지원합니다.
AF_INET6 : IPv6 기반의 internet protocol을 지원합니다.
AF_LOCAL : machine 내부에서 사용하는 protocol로 File을 통해 통신합니다.
AF_ROUTE
AG_KEY
int type
SOCK_STREAM : 데이터 전송 순서와 신뢰성을 보장하는 Connection base의 전송 방식. 수신쪽에서는 데이터를 보낸 횟수에 관계없이 보낸 크기만 의미를 가짐. Out Of Band 데이터 전송이 가능함.
SOCK_DGRAM : 데이터 전송 순서 및 전송 신뢰성을 보장할 수 없는 Connection less 전송 방식. 순서 및 신뢰성 체크가 빠져서 성능이 빠름.
SOCK_SEQPACKET : 데이터 전송 순서와 신뢰성을 보장하는 Connection base의 전송 방식. 수신 시에는 보낸 데이터의 크기 만큼을 한번에 읽어야 함.
SOCK_RAW : raw network access를 제공함.
int protocol
protocol - domain과 type에 의하여 최종적인 protocol이 정의되기 때문에 사용되지 않고 항상 0으로 설정합니다. - 원래는 domain + type + protocol로 정의될 것으로 기대했으나, 지금까지는 domain + type에 의하여 통신 protocol의 결정됩니다.
반환값
success : non-descriptor
error: -1
참고링크
'네트워크 > MAN Page' 카테고리의 다른 글
[unistd.h]fork(2) (0) | 2020.10.13 |
---|---|
[sys/socket.h] accept(2) (0) | 2020.09.23 |
[sys/socket.h] listen(2) (0) | 2020.09.23 |
[sys/socket.h] bind(2) (0) | 2020.09.23 |
[sys/socket.h] connect(2) (0) | 2020.09.23 |