본문으로 바로가기

[K.Knock]소켓 관련 함수

category Study/network 2017. 6. 6. 11:08

int socket(int domain, int type, int protocal)

- 헤더 <sys/types.h> <sys/socket.h>


- int domain : 통신방법 설정

-- PF_INET, AF_INET : IPv4 인터넷 프로토콜 사용

-- PF_INET6 : IPv6 인터넷 프로토콜 사용

-- PF_LOCAT, AF_UNIX : 같은 시스템 내에서 프로세스 끼리 통신

-- PF_PACKET : Low level socket 인터페이스를 이용

-- PF_IPX : IPX 노벨 프로토콜을 사용

- int type : 데이터의 전송 형태를 지정

-- SOCK_STREAM : TCP/IP 프로토콜을 이용

-- SOCK_DGRAM : UDP/IP 프로토콜을 이용

- int protocal : 통신에 있어 특정 프로토콜 사용을 지정하기 위한 변수, 보통 0


- 소켓을 생성하는 함수

- 호출 성공시 파일 디스크럽터를 리턴하고, 실패시 -1을 리턴




int bind(int sockfd, struct sockaddr *myaddr, int addrlen)

- 헤더 <sys/types.h> <sys/socket.h>


- int sockfd : 소켓 디스크립터

- struct sockaddr *myaddr : 주소정보 구조체

- 인터넷통신(AF_INET) 사용한다면 sockaddr_in

- 시스템 내부 통신(AF_UNIX)이면 sockaddr

- int addrlen : myaddr 구조체의 크기


- 소켓에 ip주소와 포트번호를 할당하는 함수

- 성공시 0을 리턴하고, 실패시 -1을 리턴




unsigned long int inet_addr(const char *cp)

- 헤더 <sys/socket.h> <arpa/inet.h> <netinet/in.h>


- const char *cp : 숫자와 점으로 이루어져있는 IP주소(문자열)


- IP주소에서 점을 빼냄

- 성공시 long형의 IP주소, 실패시 -1




int listen(int sockfd, int backlog)

- 헤더 <sys/socket.h>


- int s : 소켓 디스크립터

- int backlog : 대기 메시지 큐의 개수


- 소켓을 연결 요청이 가능한 상태로 되게하는 함수

- 성공시 0을 리턴하고, 실패시 -1을 리턴




int accept(int sockfd, struct sockaddr *addr, int *addrlen)

- 헤더 <sys/types.h> <sys/socket.h>


- int sockfd : 소켓 디스크립터

- struct sockaddr *addr : 클라이언트 주소 정보를 가지고 있는 포인터 

- int addrlen : myaddr 구조체의 크기


- 요청을 수락, 통신 전용 소켓 생성하는 함수

- 성공시 파일 디스크립터를 리턴하고, 실패시 -1 리턴


int connect(int sockfd, struct sockaddr *serv_addr, socklen_t addrlen)

- 헤더 <sys/types.h> <sys/socket.h>


- int sockfd : 소켓 디스크립터

- struct sockaddr *serv_addr : 서버 주소 정보를 가지고 있는 포인터 

- socklen_t addrlen : 위의 포인터가 가르키는 구조체의 크기


- 생성된 소켓을 통해 서버로 연결을 요청하는 함수

- 성공시 0을 리턴하고, 실패시 -1을 리턴


int recv(int s, void *buf, size_t len, int flags)

- 헤더 <sys/types.h> <sys/socket.h>


- int s : 소켓 디스크립터

- void *buf : 수신할 버퍼 포인터 데이터

- size_t len : 버퍼의 바이트 단위 크기

- int flags : 옵션

-- MSG_DONTWAIT : 수신대기가 필요하면 기다리지 않고 -1을 반환하면서 복귀

-- MSG_NOSIGNAL : 연결이 끊길 때, SIGPIPE 시그널을 받지 않는다.


- 반환 : 성공시 수신한 바이트수, 실패시 -1


int send(int s, void *msg, size_t len, int flags)

- 헤더 <sys/types.h> <sys/socket.h>


- int s : 소켓 디스크립터

- void *msg : 전송할 데이터

- size_t len : 데이터의 바이트 단위 크기

- int flags : 옵션

-- MSG_DONTWAIT : 전송 준비 전에 대기가 필요하면 기다리지 않고 -1을 반환하면서 복귀

-- MSG_NOSIGNAL : 연결이 끊길 때, SIGPIPE 시그널을 받지 않는다.


- 반환 : 성공시 송신한 바이트수, 실패시 -1


int recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen)

- 헤더 <sys/types.h> <sys/socket.h>


- int s : 소켓 디스크립터

- void *buf : 수신할 버퍼 포인터 데이터

- size_t len : 버퍼의 바이트 단위 크기

- int flags : 옵션

-- MSG_OOB : SOCK_STREAM에만 사용되며 out-of-band 데이터로 전송될 수 있음을 나타냄

-- MSG_DONTROUTE : 데이터는 라우팅 될 수 없음으로 지정

-- MSG_DONTWAIT : NONE BLOCKING 통신이 가능하도록 한다.

-- MSG_NOSIGNAL : 연결이 끊길 때, SIGPIPE 시그널을 받지 않는다.

- sockaddr *from : 전송한 곳의 주소정보

- socklen_t fromlen : 주소정보의 크기


- 반환 : 성공시 수신한 바이트수, 실패시 -1


int sendto(int s, const void *msg, size_t len, int flags, const struct sockaddr *to, soocklen_t tolen)

- 헤더 <sys/types.h> <sys/socket.h>


- int s : 소켓 디스크립터

- void *msg : 전송할 데이터

- size_t len : 데이터의 바이트 단위 크기

- int flags : 옵션

-- MSG_OOB : SOCK_STREAM에만 사용되며 out-of-band 데이터로 전송될 수 있음을 나타냄

-- MSG_DONTROUTE : 데이터는 라우팅 될 수 없음으로 지정

-- MSG_DONTWAIT : NONE BLOCKING 통신이 가능하도록 한다.

-- MSG_NOSIGNAL : 연결이 끊길 때, SIGPIPE 시그널을 받지 않는다.

- sockaddr *to : 목적지 주소 정보

- socklen_t tolen : 목적지 주소 정보의 크기


- 반환 : 성공시 송신한 바이트수, 실패시 -1

'Study > network' 카테고리의 다른 글

[K.Knock]TCP와 UDP에서 사용되는 소켓함수  (0) 2017.06.08
[K.Knock]TCP와 UDP 소켓 통신 과정  (0) 2017.06.07
[K.Knock]소켓이란?  (0) 2017.06.02
[K.Knock]OSI 7 Layer vs TCP/IP  (0) 2017.06.02
[K.Knock]프로토콜 조사하기  (0) 2017.05.30