본문 바로가기

공부/LinuxServer

1. 소켓 만들기 - socket()

1. header

#include <sys/socket.h>

 

2. function

int socket(int domain, int type, int protocol);

1) int domain : 통신의 주체를 결정합니다. 아래는 상수값으로, socket.h 에 정의되어있음.

domain

내용

PF_INET, AF_INET

IPv4 인터넷 프로토콜을 사용합니다.

PF_INET6, AF_INET6

IPv6 인터넷 프로토콜을 사용합니다.

PF_LOCAL, AF_UNIX

같은 시스템 내에서 프로세스 끼리 통신합니다.

PF_PACKET

Low Level Socket 인터페이스를 이용합니다.

PF_IPX

IPX 노벨 프로토콜을 사용합니다.

AF_UNSPEC

정의되어있지 않음.

PF는 프로토콜 패밀리 이며, AF는 주소 패밀리 이다.

PF_ 와 AF_는 같은 상수값을 가지고 있기 때문에 코딩시 어떤 값을 사용하여도 작동하나,

프로토콜 체계를 설정하는 부분은 PF로 주소체계를 설정하는 부분은 AF로 시작하는 상수를 사용하는 것이 바람직하다.

 

2) int type : 데이터의 전송형태를 지정합니다. 마찬가지로 socket.h 에 정의되어 있음.

type

내용

SOCK_DGRAM

Datagram을 사용하여 통신. (UDP)

SOCK_STREAM

Byte-stream을 사용하여 통신. (TCP)

SOCK_RAW

Row-protocol을 사용하여 통신.

SOCK_SEQPACKET

Sequenced-packet을 사용하여 통신.

3) protocol : 통신에 사용할 프로토콜을 지정합니다. 보통은 0을 사용합니다.

4) return :

성공

실패

소켓 식별자 (int 값)

-1

 

3. 사용

#include <sys/socket.h>

int main()
{
    int sock = socket(AF_INET, SOCK_STREAM, 0);
}