단국대학교 멀티미디어공학전공 분산멀티미디어서비스 (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
– 실습문제
- 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() 메소드를 갖는다.
- 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, ….)
}
- ThreadedTCPServerTest로 접속하여, 도시이름으로 WOEID를 쿼리하는, Java 코드로 작성한, 클라이언트 프로그램을 만든다. (20점)
-힌트: JavaTCPClient를 사용해서 작성하면 됨.
– ThreadedTCPServerTest로 접속하여, 도시이름으로 WOEID를 쿼리하는, C++ 코드로 작성한, 클라이언트 프로그램 소스 코드 (tcpClientQuery.zip)는 제공함.
- UDP를 사용하여, 클라이언트에서 쿼리하는 CityName을 가지고 WOEID 정보를 클라이언트에 보내주는 서버 프로그램을 만든다. (20점)
-힌트: 작동원리는 TCP와 동일함.
-서버 실행파일은 UDPServerWOEIDDebug.zip으로 제공함.
- UDPServerTest로 접속하여, 도시이름으로 WOEID를 쿼리하는, C++ 코드로 작성한, 클라이언트 프로그램을 만든다. (20점)
-힌트: UDP의 client를 사용해서 작성하면 됨.
– UDPServerTest로 접속하여, 도시이름으로 WOEID를 쿼리하는, Java 코드로 작성한, 클라이언트 프로그램 소스코드 (JavaUDPClientQuery.zip)는 제공함.
- Java 코드로 작성한, 동일한 Threaded Blocking TCP 서버와 UDP 서버 프로그램 작성은 Extra Credit. (20점)