Skip to content

Latest commit

 

History

History
39 lines (23 loc) · 1.36 KB

200206_게임서버관련_주저리.md

File metadata and controls

39 lines (23 loc) · 1.36 KB

1. 웹서버와 게임서버의 차이점

웹서버 : 보통 클라이언트에서 요청, 응답 한번씩

게임서버 : 계속 서버와 정보를 주고 받음

2. 간단하게 캐릭터가 움직이는 과정

client -> server  // move_x(1);
server_logic      // (server) x = x + 1
server -> client // pos_x
client_logic      // (client) x = x + 1

3. tcp와 udp를 왜 써야 하는가?

tcp : 캐릭터가 죽거나, 거래 등 손실되면 안되는 패킷을 유지

udp : 캐릭터 움직임 같이 많은 트래픽에서 손실이 되어도 보정이 가능

4. 포트포워딩 관련

5. sync, async, block, nonblock

synchronous blocking IO : syscall 이 완료될 때 까지 기다림

synchronous non-blocking IO : blocking 이 될 상황에서 일단 넘어감 - read(); 에서 안들어와도 넘어감 (EWOULDBLOCK같은 용어는 설명 못했음)

asynchronous blocking IO : IO는 non-blocking 이지만, 알림을 blocking 함 (select)

asynchronous non-blocking IO : IO를 background 에서 실행 callback 으로 처리

  • 이거 설명에서 async block 을 epoll로 했는데, select도 들어가는거 같아서
  • select 도 유저 한명에서 blocking 안당하니까 async인걸로 이해해 주시면 될거같아요!

6. 멀티쓰레드가 필요한 이유

채팅에서 accept, read 등 blocking 상황에서의 예시