컴퓨터/C
C socket()
sayyesdoit
2022. 11. 3. 19:24
I. syntax
#include <sys/socket.h>
#include <arpa/inet.h>
int socket(int domain, int type, int protocol);
II. return
성공 시 파일 디스크립터, 실패시 -1 반환
III. parameters
1. int domain
이름 | 프로토콜 체계(Protocol Family) |
PF_INET | IPv4 인터넷 프로토콜 체계 |
PF_INET6 | IPv6 인터넷 프로토콜 체계 |
PF_LOCAL | 로컬 통신을 위한 UNIX 프로토콜 체계 |
PF_PACKET | Low Level 소켓을 위한 프로토콜 체계 |
PF_IPX | IPX 노벨 프로토콜 체계 |
2. int type
타입 | 의미, 특징 |
SOCK_STREAM | 연결지향형 소켓(tcp) |
중간에 데이터가 소멸되지 않고 목적지로 전송된다. 전송 순서대로 데이터가 수신된다. 전송되는 데이터의 경계(Boundary)가 존재하지 않는다. |
|
SOCK_DGRAM | 비 연결지향형 소켓(udp) |
전송된 순서에 상관없이 가장 빠른 전송을 지향한다. 전송된 데이터는 손실의 우려가 있고, 파손의 우려가 있다. 전송되는 데이터의 경계(Boundary)가 존재한다. 한번에 전송할 수 있는 데이터의 크기가 제한된다. |
3. int protocol
프로토콜 | 의미 |
IPPROTO_TCP | TCP 소켓 |
IPPROTO_UDP | UDP 소켓 |
두번째 parameter 까지만 해도 필요한 정보가 다 전달되니 일반적으로 0을 입력한다. 다만, 하나의 프로토콜 체계 안에 데이터의 전송방식이 동일한 프로토콜이 둘 이상 존재하는 경우에는 명시해줘야 한다.