본문 바로가기

컴퓨터/C

C socket()

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을 입력한다. 다만, 하나의 프로토콜 체계 안에 데이터의 전송방식이 동일한 프로토콜이 둘 이상 존재하는 경우에는 명시해줘야 한다.

'컴퓨터 > C' 카테고리의 다른 글

C 네트워크 주소 정보의 표현  (0) 2022.11.04
C bind()  (0) 2022.11.04
C soket 소켓 생성 과정  (0) 2022.11.03
C module 모듈화  (0) 2022.11.02
C Macro 매크로  (0) 2022.11.01