Computer Science/Network

Network] UDP 주요 함수

TwinParadox 2016. 7. 21. 13:22
728x90

bind Function


int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

성공 : 0, 실패 : -1


- sockfd : 주소를 할당할 서버 소켓 디스크립터

- addr : 서버의 주소 정보를 담은 구조체(IP주소, 포트 번호 등)

- addrlen : addr에 저장된 주소 정보 크기(byte)




수신된 패킷의 포트번호와 이를 처리할 프로세스를 지정하기 위해 <포트번호-


프로세스(소켓)>을 연결

서버 주소 정보를 addr을 통해 전달 가능




recvfrom Function


ssize_t recvform(int sockfd, void* buf, size_t len, int flags, struct 


sockaddr* src_addr, socklen_t* addrlen);

성공 : 수신한 데이터의 길이(byte), 실패 : -1


- sockfd : 데이터를 전송할 소켓 디스크립터

- buf : 수신할 데이터를 저장할 버퍼의 포인터

- len : 전송한 데이터의 길이(버퍼의 크기)

- flags : 전송 시 사용할 옵션

[MSG_OOB ; SOCK_STREAM에만 사용, out-of-band 데이터(긴급한 데이터)로 전


송될 수 있음을 표시함]

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

[MSG_DONTWAIT : NONE BLOCKING 통신이 가능하게 함]

(NONE BLOCKING 통신 : buf의 데이터가 있으면 그대로 수행, 없으면 반복적으


로 buf의 데이터 있는 지 확인)

[MSG_NOSIGNAL : 상대와의 연결이 끊겼을 경우, SIGPIPE 시그널을 받지 않도


록 함]


- src_addr : 발송지 주소

- addrlen : src_addr의 실제 크기(byte)




sendto Function


ssize_t sendto(int sockfd, const void* buf, size_t len, int flags, const 


struct sockaddr* dest_addr, socklen_t addrlen);

성공 : 송신한 데이터의 길이(byte), 실패 : -1


- sockfd : 데이터를 전송할 소켓 스크립터

- buf : 전송할 데이터를 가진 버퍼의 포인터

- len : buf의 송신할 데이터의 길이(byte)

- flags : 전송 시 사용 옵션

[MSG_OOB ; SOCK_STREAM에만 사용, out-of-band 데이터(긴급한 데이터)로 전


송될 수 있음을 표시함]

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

[MSG_DONTWAIT : NONE BLOCKING 통신이 가능하게 함]

(NONE BLOCKING 통신 : buf의 데이터가 있으면 그대로 수행, 없으면 반복적으


로 buf의 데이터 있는 지 확인)

[MSG_NOSIGNAL : 상대와의 연결이 끊겼을 경우, SIGPIPE 시그널을 받지 않도


록 함]


- dest_addr : 목적지 주소

- addrlen : dest_addr의 실제 크기(byte)

728x90