☞ sendto, recvfrom ssize_t sendto(int socket, const void *buffer, size_t size, int flags, struct sockaddr *addr, socklen_t length); ssize_t recvfrom(int socket, void *buffer, size_t size, int flags, struct sockaddr *addr, socklen_t *lenptr); 데이터 그램 소켓은 비연결 기반의 메시지 전달로 내용과 순서에 신뢰성을 확보 할 수 없습니다. 각 전송 단위마다 수신 주소를 지정합니다. 연결 기반 소켓에 사용하는 listen(), accept(), connect()등은 데이터 그램 소켓에 적용되지 않지만, connect()를 ..
☞ connect, listen, accept, getpeername, send, recv int connect(int socket, struct sockaddr *addr, socklen_t length); int listen(int socket, int n); int accept(int socket, struct sockaddr *addr, socklen_t *lenptr); int getpeername(int socket, struct sockaddr *addr, socklen_t *lenptr); ssize_t send(int socket, const void *buffer, size_t size, int flags); ssize_t recv(int socket, void *buffer, size..
☞ socket, shutdown, socketpair int socket(int namespace, int style, int protocol); int shutdown(int socket, int how); int socketpair(int namespace, int style, int protocol, int filedes[2]); socket() 함수로 네임 스페이스나 프로토콜에 관계없이 소켓을 생성할 수 있습니다. namespace에는 다음과 같은 값을 사용할 수 있습니다. AF_LOCAL, AF_FILE, AF_UNIX : 로컬 네임스페이스 AF_INET : 인터넷 네임스페이스 style에는 다음과 같은 값을 사용할 수 있습니다. SOCK_STREAM : 파이프나 FIFO처럼 연결 기반으로 스..
☞ htons, ntohs, htonl, ntohl uint16_t htons(uint16_t hostshort); uint16_t ntohs(uint16_t netshort); uint32_t htonl(uint32_t hostlong); uint32_t ntohl(uint32_t netlong); 하나의 워드를 구성하는 바이트들의 순서가 컴퓨터 아키텍처별로 달라서 어떤 컴퓨터에서는 최상위 바이트가 워드의 맨 처음에 오는 빅엔디안(Big endian) 바이트 오더를 사용하고, 어떤 컴퓨터에서는 최상위 바이트가 맨 마지막에 오는 리틀 엔디안(Little endian) 바이트 오더를 사용합니다. 컴퓨터 시스템 간에 소켓으로 통신하는 경우 정수값 처럼 워드 단위의 전송이 있는 경우 바이트 오더에 대한 상호 ..
☞ inet_aton, inet_addr, inet_network, inet_ntoa, gethostbyname, gethostbyaddr, getservbyname, getservbyport int inet_aton(const char *name, struct in_addr *addr); uint32_t inet_addr(const char *name); uint32_t inet_network(const char *name); char *inet_ntoa(struct in addraddr); struct hostent *gethostbyname(const char *name); struct hostent *gethostbyaddr(const void *addr, socklen_t length, int ..
☞ bind, getsockname int bind(int socket, struct sockaddr *addr, socklen_t length); int getsockname(int socket, struct sockaddr *addr, socklen_t *length); socket() 함수에 의해 생성한 소켓은 주소가 할당되지 않은 상태로 통신을 수행하려면 주소가 할당되어야 합니다. 이 주소 할당 작업을 수행하는 것이 bind()함수이고 소켓의 주소를 확인할 때 사용하는 것이 getsockname() 함수입니다. ☞ 예제1 #if defined(WINDOWS) struct sockaddr_in sock_addr; int n; #else /* WINDOWS */ struct sockaddr_un so..
☞ pipe, popen, pclose, mkfifo int pipe(intfiledes[2]); FILE *popen(const char *command, const char *mode); int pclose(FILE *stream); int mkfifo(const char *filename, mode_t mode); 파이프(Pipe)는 두 프로세스 간에 수행 할 수 있는 통신 방법의 하나로 한 프로세스가 쓰기하면 다른 프로세스가 읽을 수 있습니다. 다른 파일같은 이름을 가지지 못합니다. FIFO는 특수 파일의 하나로 파이프와 유사하지만 일반적인 파일 처럼 이름을 가지고 접근합니다. 파이프나 FIFO는 양쪽 프로세스에서 동시에 오픈해야만 합니다. 쓰기하는 프로세스가 없는데 파이프나 FIFO를 읽으면 파..
☞ tmpfile, tmpnam, tempnam, mktemp, mkstemp FILE *tmpfile(void); char *tmpnam(char *result); char *tempnam(const char *dir, const char *prefix); char *mktemp(char *template); int mkstemp(char *template); 프로그램 가동중 임시 사용 용도의 파일이 필요할 때 사용할 수 있는 함수들입니다. tmpfile()은 시스템에서 임시파일을 "wb+" 모드로 열어서 그 스트림 오브젝트를 리턴합니다. 스트림을 닫거나 프로그램을 종료하면 임시 파일은 자동 삭제됩니다. tmpnam()은 기존 파일과 충돌되지 않도록 생성된 임시 파일명을 *result에 전달해 줍니다...