Midterm

단국대학교 멀티미디어공학전공 분산멀티미디어서비스 (2016년 봄학기) 중간고사 프로그래밍

– 날짜: 2016년 4월 14일

– 제출일시: 2016년 4월 27일까지 이러닝으로 제출 & 2016년 4월 28일 수업시간에 보고서(주요코드 설명 및 실행결과 화면캡쳐) 제출

– 내용 : C++/Java Client/Server Program using Blocking TCP, UDP, Thread, FileIO

– 준비자료 :

WOEIDLIST
ThreadedTCPServerWOEIDDebug & tcpClientQuery
UDPServerWOEIDDebug & JavaUDPClientQuery

 

– 실습문제

  1. WOEID.csv 파일을 읽어서 WOEID의 리스트를 만든다. (10점)

-WOEID (World On Earth ID)는 야후에서 사용하는 위치정보이다.

-WOEID 클래스는 ID, CityName, CountryName, Latitude, Longitude 멤버를 갖고,

멤버 정보를 출력하는 print() 메소드를 갖는다.

-WOEIDList 클래스는 WOEID의 리스트를 멤버로 갖고,

파일을 로딩하는 load(filename), 도시이름으로 ID를 찾는 find(cityname, &woeid), 리스트 전체를 출력하는 print() 메소드를 갖는다.

 

  1. Thread와 Blocking TCP를 사용하여, 클라이언트에서 쿼리하는 CityName을 가지고 WOEID 정보를 클라이언트에 보내주는 서버 프로그램을 만든다. (30점)

-서버 실행파일은 ThreadedTCPServerWOEIDDebug.zip으로 제공함.

 

WOEIDList gList; // 전역변수 (서버프로그램 시작 시, 파일로딩해서 gList로 가짐)

void * ExecuteQueryThread(void *param) { // 스레드에서 클라이언트에서 쿼리한 데이터를 찾고, 정보를 찾았으면 클라이언트로 보내는 예시

// client->read(buffer, ….)

// if (gList.find(buffer, id)) sprintf(sendbuffer, “%d,%s,%s,%f,%f”, ….)

// else sprint(sendbuffer, “%s NOT FOUND”, buffer);

// client->write(sendbuffer, ….)

}

 

  1. ThreadedTCPServerTest로 접속하여, 도시이름으로 WOEID를 쿼리하는, Java 코드로 작성한, 클라이언트 프로그램을 만든다. (20점)

-힌트: JavaTCPClient를 사용해서 작성하면 됨.

– ThreadedTCPServerTest로 접속하여, 도시이름으로 WOEID를 쿼리하는, C++ 코드로 작성한, 클라이언트 프로그램 소스 코드 (tcpClientQuery.zip)는 제공함.

 

  1. UDP를 사용하여, 클라이언트에서 쿼리하는 CityName을 가지고 WOEID 정보를 클라이언트에 보내주는 서버 프로그램을 만든다. (20점)

-힌트: 작동원리는 TCP와 동일함.

-서버 실행파일은 UDPServerWOEIDDebug.zip으로 제공함.

 

  1. UDPServerTest로 접속하여, 도시이름으로 WOEID를 쿼리하는, C++ 코드로 작성한, 클라이언트 프로그램을 만든다. (20점)

-힌트: UDP의 client를 사용해서 작성하면 됨.

– UDPServerTest로 접속하여, 도시이름으로 WOEID를 쿼리하는, Java 코드로 작성한, 클라이언트 프로그램 소스코드 (JavaUDPClientQuery.zip)는 제공함.

 

  1. Java 코드로 작성한, 동일한 Threaded Blocking TCP 서버와 UDP 서버 프로그램 작성은 Extra Credit. (20점)