SlideShare a Scribd company logo
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 ==memset 
• 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();
Net work study

More Related Content

What's hot

Linux+정리
Linux+정리Linux+정리
Linux+정리
chang yong yang
 
Ryu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic MonitorRyu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic Monitor
jieun kim
 
Hm10 Research sheets
Hm10 Research sheetsHm10 Research sheets
Hm10 Research sheets
yyooooon
 
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
Minchul Jung
 
Node.js at OKJSP
Node.js at OKJSPNode.js at OKJSP
Node.js at OKJSP
JeongHun Byeon
 
Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012Daum DNA
 
Tcp summary
Tcp summaryTcp summary
Tcp summary
Jooho Lee
 
[OpenInfra Days Korea 2018] (Track 1) 컨테이너 시대에 딱 맞는 매니코어 기반의 ARM 서버
[OpenInfra Days Korea 2018] (Track 1) 컨테이너 시대에 딱 맞는 매니코어 기반의 ARM 서버[OpenInfra Days Korea 2018] (Track 1) 컨테이너 시대에 딱 맞는 매니코어 기반의 ARM 서버
[OpenInfra Days Korea 2018] (Track 1) 컨테이너 시대에 딱 맞는 매니코어 기반의 ARM 서버
OpenStack Korea Community
 
톰캣 #08-웹서버 연동
톰캣 #08-웹서버 연동톰캣 #08-웹서버 연동
톰캣 #08-웹서버 연동
GyuSeok Lee
 
1.mysql disk io 모니터링 및 분석사례
1.mysql disk io 모니터링 및 분석사례1.mysql disk io 모니터링 및 분석사례
1.mysql disk io 모니터링 및 분석사례
I Goo Lee
 
Zookeeper 활용 nifi clustering
Zookeeper 활용 nifi clusteringZookeeper 활용 nifi clustering
Zookeeper 활용 nifi clustering
NoahKIM36
 
Binlog Servers 구축사례
Binlog Servers 구축사례Binlog Servers 구축사례
Binlog Servers 구축사례
I Goo Lee
 
Openstack Instance Resize
Openstack Instance ResizeOpenstack Instance Resize
Openstack Instance Resize
ymtech
 
도커없이컨테이너 만들기 8편 - pid namespace
도커없이컨테이너 만들기 8편 - pid namespace도커없이컨테이너 만들기 8편 - pid namespace
도커없이컨테이너 만들기 8편 - pid namespace
Sam Kim
 
Database
DatabaseDatabase
Database
Nam Hyeonuk
 
Cubietruck 리눅스 이미지 설치
Cubietruck 리눅스 이미지 설치Cubietruck 리눅스 이미지 설치
Cubietruck 리눅스 이미지 설치
ymtech
 
Cassandra education material
Cassandra education materialCassandra education material
Cassandra education material
Youngki Kim
 
Windows kernel basic exploit
Windows kernel basic exploitWindows kernel basic exploit
Windows kernel basic exploit
Kyoungseok Yang
 

What's hot (20)

Linux+정리
Linux+정리Linux+정리
Linux+정리
 
Ryu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic MonitorRyu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic Monitor
 
Hm10 Research sheets
Hm10 Research sheetsHm10 Research sheets
Hm10 Research sheets
 
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
 
Node.js at OKJSP
Node.js at OKJSPNode.js at OKJSP
Node.js at OKJSP
 
Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012
 
Tcp summary
Tcp summaryTcp summary
Tcp summary
 
[OpenInfra Days Korea 2018] (Track 1) 컨테이너 시대에 딱 맞는 매니코어 기반의 ARM 서버
[OpenInfra Days Korea 2018] (Track 1) 컨테이너 시대에 딱 맞는 매니코어 기반의 ARM 서버[OpenInfra Days Korea 2018] (Track 1) 컨테이너 시대에 딱 맞는 매니코어 기반의 ARM 서버
[OpenInfra Days Korea 2018] (Track 1) 컨테이너 시대에 딱 맞는 매니코어 기반의 ARM 서버
 
톰캣 #08-웹서버 연동
톰캣 #08-웹서버 연동톰캣 #08-웹서버 연동
톰캣 #08-웹서버 연동
 
1.mysql disk io 모니터링 및 분석사례
1.mysql disk io 모니터링 및 분석사례1.mysql disk io 모니터링 및 분석사례
1.mysql disk io 모니터링 및 분석사례
 
Zookeeper 활용 nifi clustering
Zookeeper 활용 nifi clusteringZookeeper 활용 nifi clustering
Zookeeper 활용 nifi clustering
 
Binlog Servers 구축사례
Binlog Servers 구축사례Binlog Servers 구축사례
Binlog Servers 구축사례
 
Openstack Instance Resize
Openstack Instance ResizeOpenstack Instance Resize
Openstack Instance Resize
 
Redis edu 3
Redis edu 3Redis edu 3
Redis edu 3
 
도커없이컨테이너 만들기 8편 - pid namespace
도커없이컨테이너 만들기 8편 - pid namespace도커없이컨테이너 만들기 8편 - pid namespace
도커없이컨테이너 만들기 8편 - pid namespace
 
Gfs Kyu
Gfs KyuGfs Kyu
Gfs Kyu
 
Database
DatabaseDatabase
Database
 
Cubietruck 리눅스 이미지 설치
Cubietruck 리눅스 이미지 설치Cubietruck 리눅스 이미지 설치
Cubietruck 리눅스 이미지 설치
 
Cassandra education material
Cassandra education materialCassandra education material
Cassandra education material
 
Windows kernel basic exploit
Windows kernel basic exploitWindows kernel basic exploit
Windows kernel basic exploit
 

Viewers also liked

개경프 1주차 Stl study
개경프 1주차 Stl study개경프 1주차 Stl study
개경프 1주차 Stl study
경 송
 
ㅋㄴㅁㅇ
ㅋㄴㅁㅇㅋㄴㅁㅇ
ㅋㄴㅁㅇ
경 송
 
Composite pattern
Composite patternComposite pattern
Composite pattern경 송
 
Biz발표 펜션업 경험공유 송경
Biz발표  펜션업 경험공유   송경Biz발표  펜션업 경험공유   송경
Biz발표 펜션업 경험공유 송경
경 송
 
Move semantics
Move semanticsMove semantics
Move semantics
QooJuice
 
Segmentation and Paging
Segmentation and PagingSegmentation and Paging
Segmentation and Paging
QooJuice
 
절차지향 vs 객체지향
절차지향 vs 객체지향절차지향 vs 객체지향
절차지향 vs 객체지향
QooJuice
 

Viewers also liked (7)

개경프 1주차 Stl study
개경프 1주차 Stl study개경프 1주차 Stl study
개경프 1주차 Stl study
 
ㅋㄴㅁㅇ
ㅋㄴㅁㅇㅋㄴㅁㅇ
ㅋㄴㅁㅇ
 
Composite pattern
Composite patternComposite pattern
Composite pattern
 
Biz발표 펜션업 경험공유 송경
Biz발표  펜션업 경험공유   송경Biz발표  펜션업 경험공유   송경
Biz발표 펜션업 경험공유 송경
 
Move semantics
Move semanticsMove semantics
Move semantics
 
Segmentation and Paging
Segmentation and PagingSegmentation and Paging
Segmentation and Paging
 
절차지향 vs 객체지향
절차지향 vs 객체지향절차지향 vs 객체지향
절차지향 vs 객체지향
 

Similar to Net work study

OpenStack Swift Debugging
OpenStack Swift DebuggingOpenStack Swift Debugging
OpenStack Swift Debugging
OpenStack Korea Community
 
Apache ZooKeeper 소개
Apache ZooKeeper 소개Apache ZooKeeper 소개
Apache ZooKeeper 소개
중선 곽
 
Init to systemd
Init to systemdInit to systemd
Init to systemd
Jaeock Shim
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구
ByungJoon Lee
 
tcp ip study
tcp ip studytcp ip study
tcp ip study
준철 박
 
242 naver-2
242 naver-2242 naver-2
242 naver-2NAVER D2
 
Concurrent programming
Concurrent programmingConcurrent programming
Concurrent programming
Byeongsu Kang
 
세션3. geth 클라이언트 실습 및 모니터링과 시각화
세션3. geth 클라이언트 실습 및 모니터링과 시각화세션3. geth 클라이언트 실습 및 모니터링과 시각화
세션3. geth 클라이언트 실습 및 모니터링과 시각화
Jay JH Park
 
쓰레드.pdf
쓰레드.pdf쓰레드.pdf
쓰레드.pdf
Seokju Hong
 
Overlapped IO와 IOCP 조사 발표
Overlapped IO와 IOCP 조사 발표Overlapped IO와 IOCP 조사 발표
Overlapped IO와 IOCP 조사 발표
Kwen Won Lee
 
Nginx basic configurations
Nginx basic configurationsNginx basic configurations
Nginx basic configurations
John Kim
 
Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명
진우 이
 
11_웹서비스활용
11_웹서비스활용11_웹서비스활용
11_웹서비스활용
noerror
 
Geo server 성능향상을 위한 튜닝 기법 20111028
Geo server 성능향상을 위한 튜닝 기법 20111028Geo server 성능향상을 위한 튜닝 기법 20111028
Geo server 성능향상을 위한 튜닝 기법 20111028BJ Jang
 
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성
NAVER D2
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
wonyong hwang
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
QooJuice
 
Servlet3
Servlet3Servlet3
Servlet3
Sukjin Yun
 
Network researching
Network researchingNetwork researching
Network researching
hyeok gyu Kwon
 
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
nexusz99
 

Similar to Net work study (20)

OpenStack Swift Debugging
OpenStack Swift DebuggingOpenStack Swift Debugging
OpenStack Swift Debugging
 
Apache ZooKeeper 소개
Apache ZooKeeper 소개Apache ZooKeeper 소개
Apache ZooKeeper 소개
 
Init to systemd
Init to systemdInit to systemd
Init to systemd
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구
 
tcp ip study
tcp ip studytcp ip study
tcp ip study
 
242 naver-2
242 naver-2242 naver-2
242 naver-2
 
Concurrent programming
Concurrent programmingConcurrent programming
Concurrent programming
 
세션3. geth 클라이언트 실습 및 모니터링과 시각화
세션3. geth 클라이언트 실습 및 모니터링과 시각화세션3. geth 클라이언트 실습 및 모니터링과 시각화
세션3. geth 클라이언트 실습 및 모니터링과 시각화
 
쓰레드.pdf
쓰레드.pdf쓰레드.pdf
쓰레드.pdf
 
Overlapped IO와 IOCP 조사 발표
Overlapped IO와 IOCP 조사 발표Overlapped IO와 IOCP 조사 발표
Overlapped IO와 IOCP 조사 발표
 
Nginx basic configurations
Nginx basic configurationsNginx basic configurations
Nginx basic configurations
 
Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명
 
11_웹서비스활용
11_웹서비스활용11_웹서비스활용
11_웹서비스활용
 
Geo server 성능향상을 위한 튜닝 기법 20111028
Geo server 성능향상을 위한 튜닝 기법 20111028Geo server 성능향상을 위한 튜닝 기법 20111028
Geo server 성능향상을 위한 튜닝 기법 20111028
 
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
 
Servlet3
Servlet3Servlet3
Servlet3
 
Network researching
Network researchingNetwork researching
Network researching
 
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
 

Net work study

  • 2. EasyServer 분석 • 구승모 교수님의 EasyServer와 세현이의 배틀쉽 서버코드를 예시로 이해 해보기 (도전) • https://github.com/zeliard/EasyGameServer • https://github.com/skatpgusskat/BGNL • 무단도용은 아니겠지?!
  • 3. • EasyServer Main • ---여기 까지는 무슨 말인지…. (배틀쉽 코드로 볼 예정) • 윈속 버전 : 주버전2, 부버전
  • 4. • <소켓 생성> • IPv4, TCP • 0 == IPPROTO_TCP • <소켓설정변경> • listenSocket의 SOL_SOCKET레벨의 SO_REUSEADDR 옵션의 확인결과를 opt에 저장하겠다. • 근데 SO_REUSEADDR ???
  • 5. SO_REUSEADDR • TimeWait 상태 두 호스트가 자료를 송수신하다가 연결요청을 ‘한'호스트가 가지는 상태 • 계속 TimeWait 상태에 빠질 수 있음 • 위의 예시에서 opt =TRUE (==1)로 바꾸면 TimeWait상태의 소켓의 PORT번호를 새로 시작하는 소켓에 할당되게끔 할 수 있다.
  • 6. • <Bind> • ZeroMemory ==memset • Ipv4의 주소체계 • 16bit TCP Port : h->N (short) • 32bit IP : h->N (long) INADDR_ANY (ip자동할당) • bind를 통해 주소를 소켓에 할당
  • 7. • <listen> : listenSocket을 통해 연결요청을 SOMAXCONN만큼 받겠다. • 쓰레드 부분은 잘…. ㅠ_ㅜ
  • 8. • <Accept> • accept를 통해 연결 요청 수락
  • 10. • 배틀쉽 .cpp&.h 구성 • 아까보았던 EasyServer
  • 11. • WIN32 • EasyServer 생성 • Win api 함수들… • RunMessageLoop
  • 12. 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)는 짧은 시간동안..