IOCP에 관한 자료는 네이버를 검색해도 꽤 많이 나온다(IOCP가 최신 기술은 아니니...)

그런데 대부분 IOCP를 사용한 예제는 쉽게 찾기 힘들다.

그래서 설명을 보고 실제 구현을 해볼 때 좀 망막할 수 있다.


IOCP를 처음 구현해보는데 시작이 잘 안되는 경우 아래의 프로젝트를 기반으로 해보기 추천한다.

이것은 넥스트에서 게임서버 수업 때 사용한 자료이다.


fixme_degiyamIOCP

https://github.com/jacking75/fixme_degiyamIOCP


'온라인 서버 제작자 모임'에 degiyam 이라는 닉네임의 개발자분이 오래 전에 공개한 것이다.

컨텐츠 구현 부분이 거의 없고, 클라이언트도 간단하게 있어서 분석하고 테스트 하기 좋다.

또 윈도우 서비스 모드와 콘솔 모드를 동시에 지원하는 프로그램 개발할 때 참고하기도 좋다.


fixme_MyFirstGameServer

https://github.com/jacking75/fixme_MyFirstGameServer


본인이 오래 전에 첫 서버 프로그래머로 처음으로 만든 온라인 게임 서버 이다.

처음 개발한 것이라서 지금 보면 문제점이 많다.

실제 게임 컨텐츠가 구현되어 있고, 코드가 C 언어스러워서 위의 프로젝트 보다 분석하기 쉽지 않을 것이다.



온라인 상으로 질문에 대한 답변을 하기에는 내 시간이 너무 소요 될 것 같아서 받지 않는다. 

꼭 물어보고 싶다면 판교 테크노밸리까지 오기 바란다^^;;;



저작자 표시
신고
by 흥배 2016.11.28 08:00

Windows 8부터 새로 생긴 WinSock의 확장 기능.

TCP, UDP, 멀티캐스트 UDP, IPv4, IPv6 모두 지원한다.

아주 높은 성능과 많은 송수신, 예측 가능성을 필요로 하는 애플리케이션에서 사용하면

네트워크 대기 시간 감소, 메시지 율 증가, 응답 시간 예측 가능성 향상을 실현할 수 있다.

 

 

현재 RIO에 대한 자료는 나온 시기에 비해서 아주 적은 편이다.

RIO에 대해서 알고 싶다면 먼저

구승모님의 'Windows Registered I/O (RIO) vs IOCP'

http://www.slideshare.net/sm9kr/windows-registered-io-rio 를 추천한다. 한글로 간단 명료하게 잘 설명 되어 있다.

 

위 자료를 이해했다면 위의 내용보다 좀 더 많은 정보를 볼 수 있는 MS Build 세미나 자료인 'New Techniques to Develop Low Latency Network Apps'를 보면 좋다.

http://view.officeapps.live.com/op/view.aspx?src=http%3a%2f%2fvideo.ch9.ms%2fbuild%2f2011%2fslides%2fSAC-593T_Briggs.pptx

영어이지만 구승모님 자료를 보았다면 어렵지 않게 볼 수 있다.

 

좀 더 이론 적인 부분을 보고 싶다면 아래의 자료도 좋다.

ServerFramework.com - Winsock Registered I/O Archives

http://www.serverframework.com/asynchronousevents/rio/

 

 

이제 이론을 다 보았다면 실제 코드를 보자. 역시 구승모님의 'TCP 서버 예제' https://github.com/zeliard/RIOTcpServer 가 좋다.

UDP 버전도 있다.

https://gist.github.com/ujentus/5997058/raw/48e75cf2f585ae00b19c3217a7da9e98d80f150b/RIOServer_sm9.cpp

 

Github에도 RIO 관련 라이브러리가 있으니 참고하면 좋을 듯 하다.

https://github.com/unicomp21/RIO.lib

 

자세한 API 설명은 MSDN을 참고해야 한다.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms740642(v=vs.85).aspx

 

 

기존의 IOCP를 잘 이해하고 있다면 어렵지 않게 알 수 있을 것이다.

 



ps: 

1. 구글링에서 RIO는 최신 버전의 닷넷프레임워크의 네트워크 라이브러리에서 사용되고 있어서 MS에서 예제 코드나 자세한 설명이 없다는 글을 본 적이 있다.

2. RIO를 구승모님의 'Windows Registered I/O (RIO) vs IO', build 세미나 자료, 구승모님의 'TCP 서버 예제'를 보고도 이해가 안된다면 아마 IOCP 혹은 비동기 I/O에 대한 이해가 부족하다고 생각해도 될 것 같음.

저작자 표시
신고
by 흥배 2014.01.24 08:00
| 1 |