Windows In Docker - C++ 프로젝트의 컨테이너화 빌드 및 관리
·
windows
Windows 환경의 C++ 프로젝트의 컨테이너 이미지 관리혹자는 Linux 환경에서 C++ 빌드도 되는데, 그냥 리눅스로 도커 이미지 빌드하면 안되냐고 할 것이다. 하지만 제목에서 말해주듯 IOCP 게임서버에 관한 내용으로, IO Completion Port는 윈도우 OS의 커널 오브젝트이다.Overlapped IO를 통해 OS에 종속될 수 밖에 없는 Proactor 비동기 기술의 비애라고 볼 수 있겠다. 어쩔 수 없이 Windows 플랫폼을 고집해야하는 상황이고, k8s 환경에서 다른 마이크로서비스들과 함께 관리하기 위해서라도 컨테이너화 빌드도 필요한 상황이다.  핵심 : Visual Studio 빌드 시스템 사용 (.vcsproj 프로젝트 파일) FROM mcr.microsoft.com/window..
토이프로젝트 - IOCP 서버와 유니티 클라이언트 구현(winsock2, cpp)
·
windows
네트워크 수업 자유 주제 과제로 IOCP 서버에 유니티 연동해서 클라이언트 구현함.아무래도 과제용이니까.. 대부분의 기능을 쳐냈음그래서 Accept 도 동기로 처리하고.. 패킷 처리도 엉성하고.. ​Unity3d 와 연동하는 자료는 찾아도 안나오니 공부하는데 참고만 하길 바람니당 ​​유니티 클라이언트에서는 해당 dummy들의 좌표 이동을 시각화해서 볼 수 있고 채팅 가능함server/client 디렉토리의 client.cpp : dummy를 N(defined)개 서버에 접속시키고 매 초당 무작위로 이동 (x,y : -1,1)유니티 클라이언트에서 시각화할때 유의미한 결과를 보여주기 위해서 제공한 기능/client 디렉토리는 unity project : 그냥 유니티의 tcpClient로 접속해서 cpp와 c..
IOCP(IO Completion Port) 쉽게 이해하기
·
windows
IOCP(IO Completion Port) 란?Windows 운영체제에서 제공하는 비동기 I/O 처리 모델게임 서버에서 사용해서 착각하는데, 소켓 네트워크 기술이 아니라 이벤트 기반 I/O 처리 방법론이다.​Linux는 소켓을 파일 디스크립터로 동일시하는 반면, 윈도우는 별개로 구분한다.​IOCP = Overlapped IO + ThreadPool + Completion Queue​​중첩 입출력(Overlapped I/O)비동기 I/O 작업을 가능하게 하는 Windows 기술I/O처리 요청을 스레드가 디바이스 드라이버에 위임하고 I/O작업 종료까지 해당 스레드는 다른 작업을 수행device driver가 IO 작업을 처리하고, 완료되면 이벤트 객체를 통해 전달IO 요청한 쓰레드가 이벤트를 확인하고 결과..
토이프로젝트 - winsock으로 구현한 프록시 서버(winsock2, cpp)
·
windows
학교 과제로 했던거다.   webserver.cpp와 동일한 경로에 main.html 파일이 있어야한다. main.html의 내용은 다음과 같다.​각 서버의 IP 주소는 sockAddr.sin_addr.s_addr = INADDR_ANY; 를 통해서 어떤 네트워크 인터페이스에도 바인딩하지 않음으로서 현재 사용 가능한 모든 네트워크 인터페이스에서 들어오는 연결을 수락한다. 우리는 localhost(127.0.0.1)로 접속할거임 웹서버의 포트(Port) : 8080프록시 서버의 포트(Port) : 80​ 1. 웹서버를 구동한 뒤, 원하는 브라우저에 들어가서 https://localhost:8080/main.html 으로 접속하면 성공적으로 main.html을 표시​ 2. 사용자는 포트(Port) 80번의 ..
IOCP GetQueuedCompletionStatus, CreateloCompletionPort 함수의 변경점
·
windows
어쩐지 공부하던거랑 다르더라....자꾸 오류뜨길래 무시했는데 알고보니 최신 SDK에서 함수들의 인자 타입이 변경되었다. 최신... 이라 해봤자 한참 옛날이지만ㅜ​  GetQueuedCompletionStatus 같은 경우에 LPDWORD 인자를 PULONG_PTR로 변환해야함  그외에도 CreateloCompletionPort, GetQueuedCompletionStatus의 새 버전인 GetQueuedCompletionStatusEx도 있다.​난 왜 이제 알았는가   https://learn.microsoft.com/ko-kr/windows/win32/api/ioapiset/nf-ioapiset-getqueuedcompletionstatus GetQueuedCompletionStatus 함수(ioapi..
게임서버 매치메이킹 구현과 기술 세미나 발표
·
windows
작년 초 발표한 내용대략 이런 주제로 연합 동아리 기술 세미나, 테크톡에 참가했음 근데 발표시간 10분 제한이라.. 가볍게 듣고 넘어갈 수 있는 '매치메이킹'을 주제로 발표함​​​어떤 사용자들끼리 매칭시켜줘야할까?되도록 비슷한 실력의 유저를 짝지어줘야하는데, 짝지어주는건 고사하고 도대체 어떻게 사용자들의 실력을 측정함..?? 이런 문제는 컴퓨터 발명 이전부터 계속되어 왔다. 체스나 여타 보드게임 대회 등에서 볼 수 있는 방법으로 사용자들의 실력을 수치화해서 비교하는 방법이 있다.​실력점수(MatchMakingRating) : 초기값은 모두 동일한 시작 점수로 시작해서 이기면 점수를 따고, 지면 점수를 잃는 과정속에서 MMR을 업데이트하면서 실력에 맞는 점수대로 수렴하는 원리로 승률을 예측한다.​​Elo ..