소켓프로그래밍

UDP소켓에서는 데이터를 전송할 목적지의 IP와 PORT번호를 등록하지 않습니다. 그렇기 때문에 sendto 함수호출을 통한 데이터의 전송 과정은 크게 세 단계로 이루어져 있습니다. 1. UDP 소켓에 목적지의 IP와 PORT번호 등록 2. 데이터 전송 3. UDP 소켓에 등록된 목적지 정보 삭제 sendto 함수가 호출될 때마다 위의 과정을 반복하게 되는데, 이렇게 목적지 정보가 등록되어 있지 않은 소켓을 가리켜 "unconnected 소켓"이라고 합니다. 반면 목적지가 정해져 있는 UDP소켓을 "connected 소켓"이라고 합니다. 이 소켓은 하나의 호스트에게 오랜 시간 데이터를 송수신 해야할 때 (하나의 호스트에게 sendto 함수를 많이 호출해야 할 때) 사용합니다. 위 과정의 1,3을 줄이게 ..
UDP는 TCP와 달리 데이터의 경계가 존재하는 프로토콜입니다. 따라서 데이터의 송수신 과정에서 호출하는 입출력 함수의 호출 횟수가 큰 의미를 갖습니다. 그렇기 때문에 데이터를 전부 수신하기 위해선 입력함수의 호출횟수와 출력함수의 호출횟수는 완벽하게 일치해야합니다. 만약 데이터를 수신하는 호스트A와 데이터를 송신하는 호스트B가 다음과 같이 송수신을 한다고 합시다. //호스트 A// for(int i=0; i
UDP에서는 TCP와 달리 연결 설정 과정이 필요 없으므로 listen 함수와 accept 함수는 사용하지 않고 UDP 소켓의 생성과 데이터의 송수신 과정만 존재합니다. 또, UDP는 하나의 소켓으로 둘 이상의 호스트를 대상으로 데이터의 송수신이 가능하므로 소켓은 하나만 있으면 됩니다. 다만 TCP는 상대와 연결되기에 주소 정보를 따로 추가하지 않아도 되지만 UDP 소켓은 연결상태를 유지하지 않으므로 데이터를 전송할 때마다 목적지의 주소정보를 별도로 추가해야 합니다. #include ssize_t sendto(int sock, void *buff, size_t nbytes, int flags, struct sockaddr *to, socklen_t addrlen); //success: 전송된 바이트 수 ..
프로토콜이란 컴퓨터 상호간 대화에 필요한 통신규약입니다. #include int socket(int domain, int type, int protocol); // success: 파일 디스크럽터 fail: -1 sys/socket.h에서 소켓 함수는 위와 같이 구성되어 있는데, 여기서 첫 번째 인자로 들어가는 domain이 프로토콜 체계를 뜻합니다. 이 헤더파일에 선언되어 있는 프로토콜 체계의 종류는 다음과 같습니다. PF_INET IPv4 인터넷 프로토콜 체계 PF_INET6 IPv6 인터넷 프로토콜 체계 PF_LOCAL 로컬 통신을 위한 UNIX 프로토콜 체계 PF_PACKET Low Level 소켓을 위한 프로토콜 체계 PF_IPX IPX 노벨 프로토콜 체계 프로토콜 체계가 결정되었다고 데이터의 ..
푸더기
'소켓프로그래밍' 태그의 글 목록 (2 Page)