q UDP 2 IT COOKBOOK UDP UDP UDP
q UDP 서버/클라이언트 분석 - (2) • IT COOKBOOK UDP 서버/클라이언트 구조 ① UDP 서버 UDP 클라이언트 socket() bind() recvfrom() sendto() 네트워크 한빛미디어㈜ sendto() recvfrom() closesocket() -5 - ehanbit. net
q UDP 서버/클라이언트 분석 - (3) • IT COOKBOOK UDP 서버/클라이언트 구조 ② UDP 서버 UDP 클라이언트 socket() bind() connect() recvfrom() send() 네트워크 한빛미디어㈜ sendto() recv() closesocket() -6 - ehanbit. net
q 데이터 전송 함수 - (4) • IT COOKBOOK recvfrom() 함수 사용 예 // 송신자 주소 저장을 위한 변수를 선언한다. SOCKADDR_IN peeraddr; int addrlen; // 받은 데이터를 저장할 버퍼를 선언한다. char buf[BUFSIZE]; // 데이터를 받는다. addrlen = sizeof(peeraddr); retval = recvfrom(sock, buf, BUFSIZE, 0, (SOCKADDR *)&peeraddr, &addrlen); if (retval == SOCKET_ERROR) 오류 처리; printf("%d바이트를 받았습니다. n", retval); 한빛미디어㈜ - 10 - ehanbit. net
q 예제 1 • • IT COOKBOOK pp. 195 ~ pp. 204 UDPServer. cpp / UDPClient. cpp 중요 ! UDPServer와 UDPClient라는 콘솔 애플리케이션 완성한 뒤, 통신이 되는지 확인할 것. 한빛미디어㈜ - 11 - ehanbit. net
q 브로드캐스팅 - (2) • IT COOKBOOK 브로드캐스트 데이터를 보내기 위한 절차 ① 소켓에 대해 브로드캐스팅을 활성화시킴 BOOL b. Enable = TRUE; retval = setsockopt (sock, SOL_SOCKET, SO_BROADCAST, (char *)&b. Enable, sizeof(b. Enable)); if(retval == SOCKET_ERROR) err_quit("setsockopt()"); ② 브로드캐스트 주소로 데이터를 보냄 // 소켓 주소 구조체를 초기화한다. SOCKADDR_IN remoteaddr; Zero. Memory(&remoteaddr, sizeof(remoteaddr)); remoteaddr. sin_family = AF_INET; remoteaddr. sin_port = htons(9000); remoteaddr. sin_addr. s_addr = htonl(INADDR_BROADCAST); // 보낼 데이터를 버퍼에 저장한다. char buf[BUFSIZE]; . . . // 데이터를 보낸다. retval = sendto(sock, buf, strlen(buf), 0, (SOCKADDR *)&remoteaddr, sizeof(remoteaddr)); if(retval == SOCKET_ERROR) 오류 처리; printf("%d바이트를 보냈습니다. n", retval); 한빛미디어㈜ - 13 - ehanbit. net
q 예제 2 • • IT COOKBOOK pp. 221 ~ pp. 228 Broadcast. Sender. cpp / Broadcast. Receiver. cpp 중요 ! UDPServer와 UDPClient라는 콘솔 애플리케이션 완성한 뒤, 실행한 뒤, 그 결과를 분석하라. 한빛미디어㈜ - 15 - ehanbit. net
- Slides: 16