Net work study

14
NetWork Study 송송

Transcript of Net work study

Page 1: Net work study

NetWork Study

송경

Page 2: Net work study

EasyServer 분석• 구승모 교수님의 EasyServer 와

세현이의 배틀쉽 서버코드를 예시로 이해 해보기 ( 도전 )

• https://github.com/zeliard/EasyGameServer

• https://github.com/skatpgusskat/BGNL

• 무단도용은 아니겠지 ?!

Page 3: Net work study

• EasyServer Main

• --- 여기 까지는 무슨 말인지… . ( 배틀쉽 코드로 볼 예정 )

• 윈속 버전 : 주버전 2, 부버전

Page 4: Net work study

• < 소켓 생성 >

• IPv4, TCP

• 0 == IPPROTO_TCP

• < 소켓설정변경 >

• listenSocket 의 SOL_SOCKET 레벨의SO_REUSEADDR 옵션의확인결과를 opt 에저장하겠다 .

• 근데 SO_REUSEADDR ???

Page 5: Net work study

SO_REUSEADDR• TimeWait 상태 두 호스트가 자료를 송수신하다가 연결요청을 ‘한'호스트가 가지는 상태

• 계속 TimeWait 상태에 빠질 수 있음

• 위의 예시에서 opt =TRUE (==1) 로 바꾸면TimeWait 상태의 소켓의 PORT 번호를 새로 시작하는 소켓에할당되게끔 할 수 있다 .

Page 6: Net work study

• <Bind>

• ZeroMemory ==mem-set

• Ipv4 의 주소체계• 16bit TCP Port : h->N

(short)

• 32bit IP : h->N (long)INADDR_ANY (ip 자동할당 )

• bind 를 통해 주소를 소켓에할당

Page 7: Net work study

• <listen> : listenSocket 을 통해 연결요청을 SOMAXCONN 만큼 받겠다 .

• 쓰레드 부분은 잘… . ㅠ _ ㅜ

Page 8: Net work study

• <Accept>

• accept 를 통해 연결 요청 수락

Page 9: Net work study

• BattleShip Server Code 는 ?

Page 10: Net work study

• 배틀쉽 .cpp&.h 구성

• 아까보았던 EasyServer

Page 11: Net work study

• WIN32

• EasyServer 생성

• Win api 함수들…

• RunMessageLoop

Page 12: Net work study

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) 는 짧은 시간동안 ..

Page 13: Net work study

EasyServer::GetInstance()->Run();

Page 14: Net work study