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 |