pkcserver
TRANSCRIPT
![Page 1: pkcserver](https://reader036.vdocuments.pub/reader036/viewer/2022080908/55b9a7aabb61ebc5228b470e/html5/thumbnails/1.jpg)
PKC Project - Server
![Page 2: pkcserver](https://reader036.vdocuments.pub/reader036/viewer/2022080908/55b9a7aabb61ebc5228b470e/html5/thumbnails/2.jpg)
PKC Project 소개 Server 구성
◦ Common Component◦ Server Component◦ Client Component
Proto-Type
목차
![Page 3: pkcserver](https://reader036.vdocuments.pub/reader036/viewer/2022080908/55b9a7aabb61ebc5228b470e/html5/thumbnails/3.jpg)
PKC Project
![Page 4: pkcserver](https://reader036.vdocuments.pub/reader036/viewer/2022080908/55b9a7aabb61ebc5228b470e/html5/thumbnails/4.jpg)
프로젝트 시작 계기◦ DirectX 3D 프로그래밍 스터디와 소켓 프로그래밍
스터디를 진행하면서 “우리도 온라인 게임을 만들어보자”로 시작한 프로젝트
프로젝트에서의 역할◦ 게임 서버 (Network Server + DataBase + Client
Connection) 개발
PKC Project 소개
장르 : Action RPG!
![Page 5: pkcserver](https://reader036.vdocuments.pub/reader036/viewer/2022080908/55b9a7aabb61ebc5228b470e/html5/thumbnails/5.jpg)
Server 구성
![Page 6: pkcserver](https://reader036.vdocuments.pub/reader036/viewer/2022080908/55b9a7aabb61ebc5228b470e/html5/thumbnails/6.jpg)
서버와 클라이언트를 TCP/IP 로 연결하는 라이브러리 라이브러리를 이용한 서버 , 클라이언트 구현
Server 구성
ServerLib
ClientLib
Implement Server Implement Client
![Page 7: pkcserver](https://reader036.vdocuments.pub/reader036/viewer/2022080908/55b9a7aabb61ebc5228b470e/html5/thumbnails/7.jpg)
최신 서버 라이브러리 구성◦ 서버와 클라이언트 간 I/O 제어◦ I/O 에 들어갈 함수를 tool 을 이용해 작성
작성한 함수는 tool 에서 함수 원형 및 헤더 파일 생성 ( 소스파일 )◦ 서버 / 클라이언트 프로그램은 작성된 함수의 내용을 구현
개인 목표◦ 서버와 클라이언트 간 I/O 제어◦ I/O 함수를 직접 작성 후 서버 / 클라이언트에 구현
Server 구성
![Page 8: pkcserver](https://reader036.vdocuments.pub/reader036/viewer/2022080908/55b9a7aabb61ebc5228b470e/html5/thumbnails/8.jpg)
Common◦ 소켓 및 I/O 데이터◦ Log
Server/Client Library◦ TCP/IP 연결 관리◦ 데이터베이스 접근
구현된 Server/Client◦ Business Logic 구현◦ Library 를 이용하여 데이터베이스 접근
Server 구성
![Page 9: pkcserver](https://reader036.vdocuments.pub/reader036/viewer/2022080908/55b9a7aabb61ebc5228b470e/html5/thumbnails/9.jpg)
Library 구성
Common Component
클래스 기능CSocketInfo 소켓 및 I/O 데이터 관리CLog 로그 관리PacketHeader I/O 패킷 헤더
![Page 10: pkcserver](https://reader036.vdocuments.pub/reader036/viewer/2022080908/55b9a7aabb61ebc5228b470e/html5/thumbnails/10.jpg)
Library 구성
Server Component
클래스 기능CServer 클라이언트 연결 관리CIOProcessor 입 / 출력 처리 전담CDispatcher 입력 패킷 처리자CDispatchable 패킷 처리자 구현물CSender 출력자CClientGroup Client 소그룹 ( 파티 , 길드 , …)
![Page 11: pkcserver](https://reader036.vdocuments.pub/reader036/viewer/2022080908/55b9a7aabb61ebc5228b470e/html5/thumbnails/11.jpg)
서비스 시나리오◦ DB 미구현
Server ComponentCommunication Ob-jectClass Object
Data Structure
Kernel Object
call system funcdata move-mentmanage & impl.
client
CServer
socket
map
IOCP
CIOProces-sor
sendqueu
e
recvqueu
e
Dis-patcher
CDispatch-able
Busi-nessLogic
di-aptchmap
con-nect
regis-tersocketto IOCP
man-agesocket
get IOCPcompletion sta-tus
send
recv
queuere-ceiveddata
de-queuere-ceiveddata
manage dia-patchables
callCDispatch-able::dispatch
implementsdispatch-able
queue send data
dequeue send data
CSender
![Page 12: pkcserver](https://reader036.vdocuments.pub/reader036/viewer/2022080908/55b9a7aabb61ebc5228b470e/html5/thumbnails/12.jpg)
Library 구성
Client Component
클래스 기능CConnector 서버 연결자CIOProcessor 입 / 출력 제어 전담CSender 출력자CReceiver 입력자
![Page 13: pkcserver](https://reader036.vdocuments.pub/reader036/viewer/2022080908/55b9a7aabb61ebc5228b470e/html5/thumbnails/13.jpg)
서비스 시나리오◦ DB 미구현◦ CDispatcher 미구현
Client Component
CIOProces-sor
Busi-nessLogic
sendqueu
e
recvqueu
e
CConnec-tor
PKC Server
send/recvcon-nect
delegate connection to CIOProcessor queue
re-ceiveddata
dequeuereceiveddata
queuesenddata
de-queuesenddata
CRe-ceiver
CSender
Communication Ob-jectClass Object
Data Structure
call system funcdata move-mentmanage & impl.
![Page 14: pkcserver](https://reader036.vdocuments.pub/reader036/viewer/2022080908/55b9a7aabb61ebc5228b470e/html5/thumbnails/14.jpg)
Proto-Type
![Page 15: pkcserver](https://reader036.vdocuments.pub/reader036/viewer/2022080908/55b9a7aabb61ebc5228b470e/html5/thumbnails/15.jpg)
서버 / 클라이언트 간 I/O 제어◦ I/O Component(CIOProcessor, CDispatcher,
CSender, CReceiver, …)
Business Logic 과 I/O 함수를 연결◦ Business Logic : 채팅 프로그램
Proto-Type
![Page 16: pkcserver](https://reader036.vdocuments.pub/reader036/viewer/2022080908/55b9a7aabb61ebc5228b470e/html5/thumbnails/16.jpg)
Project Specification◦ Windows : higher than Windows Vista◦ Language : higher than C/C++(C99/C++98)◦ IDE : Microsoft Visual Studio 2010
다음 과제◦ 패킷 헤더 개량◦ 클라이언트 Dispatcher 구현◦ DataBase 엔진 연결자 구현
Proto-Type