예쁜 꿈을 꾸라고
  • 홈
  • 태그
  • 방명록
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • 분류 전체보기 N
      • Unreal Engine N
        • Dedicated Servers N
      • DirectX
      • 게임 프로그래밍 기초
      • 게임 프레임워크
      • 게임 서버
      • 게임 로직
      • 자료구조와 알고리즘
      • Git
      • 포트폴리오
      • 취업준비
  • 홈
  • 태그
  • 방명록
게임 서버

게임 서버 기초(7) - IOCP 채팅 서버 구현하기

# IOCP 서버의 핵심 흐름1. WSASocket()으로 Overlapped 지원 소켓 생성2. CreateIoCompletionPort()로 리슨 소켓을 IOCP에 연결3. 스레드를 생성하고4. 스레드는 GetQueueCompletionStatus()에 들어가 이벤트 대기5. AcceptEx(), WSARecv(), WSASend() 등 구조체 OVERLAPPED* 를 전달해 비동기 요청 - 클라 연결은 AcceptEx() - 데이터 수신 WSARecv() - 데이터 송신 WSASend()6. 이벤트 발생 시, GetQueueCompletionStatus()가 스레드를 깨우며 큐(Queue)에 있는 OVERLAPPED*에 있는 패킷 처리7. 작업 처리 후 다시 AcceptEx(), WSARecv()..

2025. 5. 23. 16:00
게임 서버

게임 서버 기초(6) - IOCP 서버 기초

# IOCP 서버란?1. Input Output Completion Port의 약자2.Windows의 I/O Completion Port 모델을 이용해 비동기(Overlapped) 네트워크를 효율적으로 처리하는 서버 구조3. 커널이 완료된 I/O 작업을 큐에 넣고, 작업 대기 중인 스레드를 GetQueueCompletionStatus()로 깨워서 처리4. 각 작업이 끝나면 AcceptEx(), WSARecv(), WSAsend 등에 OVERLAPPED 포인터를 넘겨 다시 비동기 요청을 걸어야 한다. # IOCP 서버의 핵심 흐름1. WSASocket()으로 Overlapped 지원 소켓 생성2. CreateIoCompletionPort()로 리슨 소켓을 IOCP에 연결3. 스레드를 생성하고4. 스레드..

2025. 5. 22. 00:22
게임 서버

게임 서버 기초(5) - 클라이언트로 서버 접속하기

# windows 환경에서 클라이언트로 서버 접속하기1. WinSock 초기화2. 소켓 생성3. 주소 정보 설정4. 서버에 접속 요청5. 서버에 데이터 전송 / 서버로부터 데이터 수신6. 소켓 종료 # 클라이언트 함수1. WSAStartup2. socket3. inet_pton4. connect5. send / recv6. closesocket 1. WinSock 초기화- WSAStartup 함수 호출을 통해 WinSock 라이브러리를 명시적으로 초기화해줘야 소켓 함수들을 사용할 수 있다. - 함수 호출 이후 WinSock DLL(ws2_32.dll)이 로드되고 - 내부적으로 네트워크 자원이 할당 - socket(), bind(), connect() 등 함수 사용 가능 - WSAData 구조체는 Wi..

2025. 5. 14. 16:39
게임 서버

게임 서버 기초(4) - 리슨 서버(listen server) 만들기

# windows 환경에서 리슨 서버 열기1. WinSock 초기화2. 소켓 생성3. 주소 정보 설정4. 소켓에 주소 바인딩5. 리슨 상태로 전환(클라이언트 접속 요청 대기)6. 클라이언트 연결 수락7. 클라이언트로부터 데이터 수신 / 클라이언트로 데이터 전송8. 소켓 종료 # 서버 함수1. WSAStartup2. socket4. bind5. listen6. accept7. recv / send8. closesocket 1. WinSock 초기화- WSAStartup 함수 호출을 통해 WinSock 라이브러리를 명시적으로 초기화해줘야 소켓 함수들을 사용할 수 있다. - 함수 호출 이후 WinSock DLL(ws2_32.dll)이 로드되고 - 내부적으로 네트워크 자원이 할당 - socket(), bin..

2025. 5. 14. 16:06
게임 서버

게임 서버 기초(3) - 공용 네트워크 / 프라이빗 네트워크

국가 네트워크 - 통신사 모뎀 - 개인 공유기 - PC, 태블릿, 모바일, 가전 기기 등등 # 공용 네트워크(Public Network)1. 인터넷에 직접 연결되는 네트워크2. 인터넷 서비스 제공 업체(SK, KT, LG 등)이 제공3. 각 인터넷 회선마다 고유한 IP주소가 부여4. 누구나 접근 가능5. Wi-Fi, 클라우드 서버, 웹사이트 등이 공용 네트워크에 해당  # 프라이빗 네트워크(Private Network)1. 인터넷에 직접 연결되지 않아 외부에서 접근 불가2. 일반적으로 가정, 회사, 학교 등 내부 통신용으로 사용3. 보안이 강력하고 내부 사용자가 안전하게 데이터를 공유할 수 있다.  # 로컬 네트워크(Local Network)1. 내 컴퓨터 자신

2025. 2. 5. 16:54
게임 서버

게임 서버 기초(2) - 패킷, 데이터, 국제 통신 규약, 프로토콜

# 패킷(Packet)1. 네트워크에서 데이터를 주고 받을 때 사용하는 작은 단위의 데이터 조각2. 클라이언트가 서버에 보내는 정보(데이터)가 패킷3. 서버는 클라이언트가 보낸 패킷을 받아 처리  # 데이터(Data)1. 컴퓨팅에서 모든 것은 다 바이트 블록이다.2. 이미지는 2차원 배열 바이트 덩어리, 문자열은 const char* 배열 => 연속된 메모리 블록3. 즉 데이터를 압축하여 파일에 저장하고, 그 파일을 읽어 적절한 데이터 형태로 변환하는게 네트워크 데이터 송수신 과정이다.4. 이 때 가장 중요한 것은 데이터를 저장한 순서대로 데이터를 적절히 변환하는 과정이다.5. 그래서 데이터의 저장 순서를 통일하면, 데이터를 변환하기도 쉽다.6. 그래서 전 세계에서 네트워크 통신의 편의를 위해 데이터의 ..

2025. 2. 5. 16:46
게임 서버

게임 서버 기초(1) - 서버(Server)란?

# 서버(Server)1. 클라이언트의 요청을 처리하고 응답을 보내는 소프트웨어2. 서버는 외부(클라이언트)에서 전송해오는 데이터를 수신하는 것을 허용한 프로그램3. 서버는 다른 네트워크에 접속하는 프로그램이 아니기 때문에 서버 컴퓨터에 접속을 요청하는 클라이언트의 IP주소는 필요해도 서버의 IP주소는 필요없다.4. 서버는 리틀 엔디안이 정식 규격  # 서버와 클라이언트의 관계상황 : A 클라이언트가 이동 키를 입력했을 때1. 서버는 A(클라이언트)의 입력 정보(패킷)를 수신하고 이를 패킷 형태로 처리2. 이후 B 클라이언트에게 데이터를 전달하여 B의 화면에 A의 이동이 반영  # 서버 프로그래머의 역할1. 패킷 정의 : 클라이언트와 주고받는 데이터 형식과 구조를 설계2. 패킷 처리 : 수신된 데이터를 ..

2025. 2. 5. 16:44
  • «
  • 1
  • »

공지사항

전체 카테고리

  • 분류 전체보기 N
    • Unreal Engine N
      • Dedicated Servers N
    • DirectX
    • 게임 프로그래밍 기초
    • 게임 프레임워크
    • 게임 서버
    • 게임 로직
    • 자료구조와 알고리즘
    • Git
    • 포트폴리오
    • 취업준비
애드센스 광고 영역
  • 최근 글
  • 최근 댓글

최근 글

최근댓글

태그

  • #게임 프로그래밍
  • #C++
MORE

전체 방문자

오늘
어제
전체

블로그 인기글

Powered by Privatenote Copyright © 예쁜 꿈을 꾸라고 All rights reserved. TistoryWhaleSkin3.4

티스토리툴바