<개인공부>/[TCP_IP 소켓]

[이론] socket() 함수에 대해서

사용자 BlockDMask 2017. 11. 4. 12:59
반응형

안녕하세요. BlockDMask 입니다.


오늘은 socket() 함수에 대해서 알아보겠습니다.


이전 글 2017/11/03 - [/[TCP/IP 소켓]] - [이론] 서버와 클라이언트 소켓의 흐름 에서 흐름을 보셨다면 아시겠지만


서버와 클라이언트가 통신을 하기 위해서는 소켓 라이브러리를 사용합니다.


이때 소켓을 만들기 위해서는 socket() 를 이용합니다.

  • 헤더파일 : <sys/types.h>, <sys/socket.h>

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

  • 정의 : socket() creates an endpoint for communication and returns a descriptor.
    **출처 : unix 에서  man socket 치면 자세히 나와있습니다. 
    ** 사실 이전시간에 socket 이라는 함수 라고 계속 말씀 드렸지만, socket은 system call 입니다.

    반환 : 해당 소켓을 가리키는 소켓 디스크립터(socket descriptor)를 반환합니다. 파일 디스크립터와 비슷합니다.
    -1 이 반환되면 소켓 생성 실패, 0 이상의 값이 나오면 socket descriptor 반환.
    ** 소켓을 통해 통신하는 방식은 일종에 파일에 쓰고 읽는 방식이라 소켓 디스크립터도 파일 디스크립터와 같다고 보면 됩니다.

    domain : 어떤 영역에서 통신할 것인지에 대한 영역을 지정해 줍니다.  프로토콜 family를 지정해 주는 것 입니다. 
    ->AF_UNIX(프로토콜 내부에서), AF_INET(IPv4), AF_INET6(IPv6)

    type : 어떤 타입의 프로토콜을 사용할 것인지에 대해 설정 하는 것 입니다.
    -> SOCK_STREAM(TCP), SOCK_DGRAM(UDP), SOCK_RAW(사용자 정의)

    protocol : 어떤 프로토콜의 값을 결정하는 것 입니다.
    -> 0을 쓰셔도 되고, IPPROTO_TCP(TCP 일때), IPPROTO_UDP(UDP 일때)

<참고>

http://www.geeksforgeeks.org/socket-programming-cc/
+ man page in unix.

반응형