[리눅스 UDP 데이터 송신함수]
#include <sys/socket.h>
ssize_t sendto(int sock, void *buff, size_t nbytes, int flags, struct sockaddr *to, socklen_t addrlen);
*sock:데이터 전송에 사용될 UDP 소켓의 파일 디스크립터를 인자로 전달
*buff:전송할 데이터를 저장하고 있는 버퍼의 주소 값 전달
*nbytes:전송할 데이터 크기를 바이트 단위로 전달
*flags:목적지 주소정보를 담고 있는 sockaddr 구조체 변수의 주소 값 전달
*to:목적지 주소정보를 담고 있는 sockaddr 구조체 변수의 주소 값 전달
*addrlen:매개변수 to로 전달된 주소 값의 구조체 변수 크기 전달
[리눅스 UDP 데이터 수신함수]
#include <sys/socket.h>
ssize_t recvfrom(int sock, void *buff, size_t nbytes, int flagggs, struct sockaddr *from, socklen_t *addrlen);
*sock:데이터 수신에 사용될 UDP 소켓의 파일 디스크립터르 인자로 전달
*buff:데이터 수신에 사용될 버퍼의 주소 값 전달
*nbytes:수신할 최대 바이트 수 전달, 때문에 매개변수 buff가 가리키는 버퍼의 크기를 넘을 수 없다
*flags:옵션 지정에 사용되는 매개변수, 지정할 옵션이 없다면 0 전달
*from:발신지 정보를 채워 넣을 sockaddr 구조체 변수의 주소 값 전달
*addrlen:매개변수 from으로 전달된 주소에 해당하는 구조체 변수의 크기정보를 담고 있는 변수의 주소값 전달
[윈도우 UDP 데이터 송신함수]
#include <winsock2.h>
int sendto(SOCKET s, const char *buf, int len, int flags, const struct sockaddr* to, int tolen);
*s:데이터 전송에 사용될 UDP 소켓의 파일 디스크립터를 인자로 전달
*buf:전송할 데이터를 저장하고 있는 버퍼의 주소 값 전달
*len:전송할 데이터 크기를 바이트 단위로 전달
*flags:목적지 주소정보를 담고 있는 sockaddr 구조체 변수의 주소 값 전달
*to:목적지 주소정보를 담고 있는 sockaddr 구조체 변수의 주소 값 전달
*tolen:매개변수 to로 전달된 주소 값의 구조체 변수 크기 전달
[윈도우 UDP 데이터 수신함수]
#include <winsock2.h>
int recvfrom(SOCKET s, char *buf, int len, int flags, struct sockaddr *from, int *fromlen);
*s:데이터 수신에 사용될 UDP 소켓의 파일 디스크립터르 인자로 전달
*buf:데이터 수신에 사용될 버퍼의 주소 값 전달
*len:수신할 최대 바이트 수 전달, 때문에 매개변수 buff가 가리키는 버퍼의 크기를 넘을 수 없다
*flags:옵션 지정에 사용되는 매개변수, 지정할 옵션이 없다면 0 전달
*from:발신지 정보를 채워 넣을 sockaddr 구조체 변수의 주소 값 전달
*fromlen:매개변수 from으로 전달된 주소에 해당하는 구조체 변수의 크기정보를 담고 있는 변수의 주소값 전달
[리눅스 스트림의 일부 종료(half-close) 함수]
#include <sys/socket.h>
int shutdown(int sock, int howto);
->성공 시 0, 실패 시 -1 반환
*sock:종료할 소켓의 파일 디스크립터 전달
*howto:종료방법에 대한 정보 전달
[윈도우 스트림의 일부 종료(half-close) 함수]
#include <winsock2.h>
int shutdown(SOCKET sock, int howto);
->성공 시 0, 실패 시 -1 반환
*sock:종료할 소켓의 핸들
*howto:종료방법에 대한 정보 전달
[리눅스 IP 주소정보 얻어오는 함수]
#include <netdb.h>
struct hostent *gethostbyname(const char *hostname);
->성공 시 hostent 구조체 변수의 주소 값, 실패 시 NULL 포인터 반환
struct hostent
{
char *h_name; //official name
char **h_aliases; //alias list
int h_addrtype; //host address type
int h_length; //address length
char **h_addr_list; //address list
};
[리눅스 도메인 정보 얻어오는 함수]
#include <netdb.h>
struct hostent *gethostbyaddr(const char *addr, socklen_t len, int family);
*addr:IP주소를 지니는 in_addr 구조체 변수의 포인터 전달, IPv4 이외의 다양한 정보를 전달받을 수 있도록 일반화하기 위해서 매개변수를 char형 포인터로 선언
*len:첫 번째 인자로 전달된 주소정보의 길이, IPv4의 경우 4, IPv6의 경우 16 전달
*family:주소체계 정보 전달. IPv4의 경우 AF_INET, IPv6의 경우 AF_INET6 전달
[윈도우 IP 주소정보 얻어오는 함수]
#include <winsock2.h>
struct hostent *gethostbyname(const char *name);
->성공 시 hostent 구조체 변수의 주소 값, 실패 시 NULL 포인터 반환
[윈도우 도메인 정보 얻어오는 함수]
#include <winsock2.h>
struct hostent *gethostbyaddr(const char *addr, int len, int type);
*addr:IP주소를 지니는 in_addr 구조체 변수의 포인터 전달, IPv4 이외의 다양한 정보를 전달받을 수 있도록 일반화하기 위해서 매개변수를 char형 포인터로 선언
*len:첫 번째 인자로 전달된 주소정보의 길이, IPv4의 경우 4, IPv6의 경우 16 전달
*type:주소체계 정보 전달. IPv4의 경우 AF_INET, IPv6의 경우 AF_INET6 전달
[리눅스 설정상태의 참조 함수]
#include <sys/socket.h>
int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen);
->성공 시 0, 실패 시 -1 반환
*sock:옵션확인을 위한 소켓의 파일 디스크립터 전달
*level:확인할 옵션의 프로토콜 레벨 전달
*optname:확인할 옵션의 이름 전달
*optval:확인결과의 저장을 위한 버퍼의 주소 값 전달
*optlen:네 번째 매개변수 optval로 전달된 주소 값의 버퍼크기를 담고 있는 변수의 주소 값 전달, 함수호출이 완료되면 이 변수에는 네 번째 인자를 통해 반환된 옵션정보의 크기가 바이트 단위로 계산되어 저장된다.
[리눅스 설정상태 변경 함수]
#include <sys/socket.h>
int setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen);
->성공 시 0, 실패 시 -1 반환
*sock:옵션변경을 위한 소켓의 파일 디스크립터 전달
*level:변경할 옵션의 프로토콜 레벨 전달
*optname:변경할 옵션의 이름 전달
*optval:변경할 옵션정보를 저장한 버퍼의 주소 값 전달
*optlen:네 번째 매개변수 optval로 전달된 옵션정보의 바이트 단위 크기 전달
[윈도우 설정상태의 참조 함수]
#include <winsock2.h>
int getsockopt(SOCKET sock, int level, int optname, char *optval, int *optlen);
*sock:옵션확인을 위한 소켓의 핸들 전달
*level:확인할 옵션의 프로토콜 레벨 전달
*optname:확인할 옵션의 이름 전달
*optval:확인결과의 저장을 위한 버퍼의 주소 값 전달
*optlen:네 번째 매개변수 optval로 전달된 주소 값의 버퍼크기를 담고 있는 변수의 주소 값 전달, 함수호출이 완료되면 이 변수에는 네 번째 인자를 통해 반환된 옵션정보의 크기가 바이트 단위로 계산되어 저장된다.
[윈도우 설정상태 변경 함수]
#include <winsock2.h>
int setsockopt(SOCKET sock, int level, int optname, const char *optval, int optlen);
*sock:옵션변경을 위한 소켓의 핸들 전달
*level:변경할 옵션의 프로토콜 레벨 전달
*optname:변경할 옵션의 이름 전달
*optval:변경할 옵션정보를 저장한 버퍼의 주소 값 전달
*optlen:네 번째 매개변수 optval로 전달된 옵션정보의 바이트 단위 크기 전달
[참고] TCP/IP 소켓프로그래밍 윤성우 저
'C > TCPIP 소켓 프로그래밍(윤성우 저)' 카테고리의 다른 글
TCP/IP 소켓 프로그래밍 15장 내용 확인문제 (0) | 2017.07.12 |
---|---|
TCP/IP 소켓 프로그래밍 10~14장 함수 복습 (0) | 2017.07.09 |
TCP/IP 소켓 프로그래밍 14장 내용 확인문제 (0) | 2017.07.01 |
TCP/IP 소켓 프로그래밍 13장 내용 확인문제 (0) | 2017.06.24 |
TCP/IP 소켓 프로그래밍 12장 내용 확인문제 (2) | 2017.06.21 |