네트워크/MAN Page

[sys/socket.h] socket(2)

가을맛 2020. 9. 23. 23:15

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

참고링크

https://www.it-note.kr/112