본문 바로가기

IT Device Game

창고-IOCP이용한 TCP서버 샘플

IOCP를 이용한 TCP서버인데 거대한 짬뽕서버가 되어버렸다.

일단 되게 하라는 정신이 투철한 저로서는 최선을 다한 결과고 생각보다 버그도 없이 잘 돌아간다.

win32api를 가장한 막가파 C프로그램이기도 하고 C++을 가장한 C프로그램이기도 하다
왜냐하면 귀찮은 로직들을 Unix에서 쓰던 라이브러리를 가져와서 버무려 버렸기 때문에 이건 뭐 C도 아니고 Win32api도 아니고 ODBC를 편하게 쓸려고 하다보니 결국 MFC 라이브러리도 이어다 붙였다.
IOCP가 왜 필요한지는 다들 아실거고 간단한 플그램 설명

TcpIocpSvr.zip
다운로드
대표 이미지


울딸 지후가 태어난달의 거액의 병원비(?) 지출로 마침 생활비가 부족하던 2007년도 겨울 쯤
약간의 아르바이트비를 받고 만든 IOCP 프로그램의 초기 샘플소스




 

 

주의: ODBC가 등록되어 있지 않으면 실행이 안됩니다.

일단 1차적으로 구조만 만들어둔 샘플

통신처리를 IOCP로 구현했고 5개의 THREAD가 들어오는 TCP전문을 처리하는 구조.

클라이언트는 프로그래밍 게시판 조금 아래에 등록되어 있는 "소켓통신 DLL과 그 DLL호출하는 VB프로그램"을 쓰시면됩니다.

테스트용으로 구조만 만들어져 있고 전문을 보내면 전문을 받은뒤DB처리 하고 응답 전문을 돌려보냄
그리고DB처리는 CDatabase Class 를 이용함 클래스이름이 ADO어쩌구 인것은 원래 ADO로 처리한 소스인지라 고치기 싫었던 귀차니즘의 압박으로 그대로 씀

환경파일로 쓰는 config.ini의 구조

LOGPATH = D:\temp\log                # 로그를 남길 디렉토리
SVRPORT = 5001                              # 서버프로세스에 접속할 포트
DBDSN = POS24SVR                        # 접속할 ODBC DSN
DBID = pos24                                   # 접속할 DB USER ID
DBPWD = Pos24                               # 접속할 DB PASSWORD

나머지는 주석없는 소스를 장인정신으로 보시거나 훨 설명 잘하는 IOCP관련 문서들을 찾아보세요


일단 대단히 불친절한 설명에 머리를 숙입니다.
이 포스트를 읽으시는 분들에겐 매우 죄송한 마음이 들지만 어느정도 많은 검색을 하다가 샘플이 필요해서 오신분들이라면 이정도만이라도 충분히 이해되시리라고 편하게 마음먹어봅니다.

-귀차니즘은 본인의 불치병입니다 -


반응형