NetWork Study
송경
EasyServer 분석• 구승모 교수님의 EasyServer 와
세현이의 배틀쉽 서버코드를 예시로 이해 해보기 ( 도전 )
• https://github.com/zeliard/EasyGameServer
• https://github.com/skatpgusskat/BGNL
• 무단도용은 아니겠지 ?!
• EasyServer Main
• --- 여기 까지는 무슨 말인지… . ( 배틀쉽 코드로 볼 예정 )
• 윈속 버전 : 주버전 2, 부버전
• < 소켓 생성 >
• IPv4, TCP
• 0 == IPPROTO_TCP
• < 소켓설정변경 >
• listenSocket 의 SOL_SOCKET 레벨의SO_REUSEADDR 옵션의확인결과를 opt 에저장하겠다 .
• 근데 SO_REUSEADDR ???
SO_REUSEADDR• TimeWait 상태 두 호스트가 자료를 송수신하다가 연결요청을 ‘한'호스트가 가지는 상태
• 계속 TimeWait 상태에 빠질 수 있음
• 위의 예시에서 opt =TRUE (==1) 로 바꾸면TimeWait 상태의 소켓의 PORT 번호를 새로 시작하는 소켓에할당되게끔 할 수 있다 .
• <Bind>
• ZeroMemory ==mem-set
• Ipv4 의 주소체계• 16bit TCP Port : h->N
(short)
• 32bit IP : h->N (long)INADDR_ANY (ip 자동할당 )
• bind 를 통해 주소를 소켓에할당
• <listen> : listenSocket 을 통해 연결요청을 SOMAXCONN 만큼 받겠다 .
• 쓰레드 부분은 잘… . ㅠ _ ㅜ
• <Accept>
• accept 를 통해 연결 요청 수락
• BattleShip Server Code 는 ?
• 배틀쉽 .cpp&.h 구성
• 아까보았던 EasyServer
• WIN32
• EasyServer 생성
• Win api 함수들…
• RunMessageLoop
PeekMessage?게임 루프구조• http
://skmagic.tistory.com/entry/API-%EA%B2%8C%EC%9E%84-%EB%A9%94%EC%8B%9C%EC%A7%80-%EA%B5%AC%EC%A1%B0GetMessagePeekMessage
-------( 무한 루프 )--------
• 메시지가 있으면 처리하고
• 메시지가 없으면 게임을 돌려라 . (logic)
-------( 무한 루프 )--------
업데이트 (Render) 는 짧은 시간동안 ..
EasyServer::GetInstance()->Run();