2009. 12. 15. 10:02
socket()
2009. 12. 15. 10:02 in Programmings/TCP/IP socket programming
통신을 하기 위해선 소켓을 생성해야 한다. 소켓은 통신을 위한 엔드포인트 정도로 생각하면 될 듯 하다.
소켓을 생성하기 위해서 socket() 이란 함수를 사용한다. socket()를 통해 시스템 내부적으론 소켓을 생성하고, 생성된 소켓을 조작하기 위한 파일 디스크립터를 리턴한다.
#include <sys/types.h>
#include <sys/socket.h>
int socket (int domain, int type, int protocol);
#include <sys/socket.h>
int socket (int domain, int type, int protocol);
- domain - 통신을 하기 위해 사용할 프로토콜 체계(Protocol Family)
- type - 소켓에서 사용하게 될 데이터 전송 타입
- protocol - 통신을 하기 위한 프로토콜
- 리턴값 - 성공 시 int형 파일 디스크립터, 실패 시 -1 리턴
일반적으로 아래와 같이 TCP socket 또는 UDP socket 를 생성하여 사용하게 된다.
...
int tcp_sock, udp_sock;
tcp_sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
udp_sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
...
int tcp_sock, udp_sock;
tcp_sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
udp_sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
...
리턴값으로 파일 디스크립터를 받게 되는데, 리눅스에서 현재 사용하고 있는 디스크립터(0, 1, 2 이외의 )가 있다면 그 다음 숫자부터 차례로 디스크립더를 리턴받게 된다.
'Programmings > TCP/IP socket programming' 카테고리의 다른 글
connect() (0) | 2009.12.18 |
---|---|
listen() and accept() (0) | 2009.12.16 |
bind() (0) | 2009.12.15 |