네트워크 수업 자유 주제 과제로 IOCP 서버에 유니티 연동해서 클라이언트 구현함.
아무래도 과제용이니까.. 대부분의 기능을 쳐냈음
그래서 Accept 도 동기로 처리하고.. 패킷 처리도 엉성하고..
Unity3d 와 연동하는 자료는 찾아도 안나오니 공부하는데 참고만 하길 바람니당

유니티 클라이언트에서는 해당 dummy들의 좌표 이동을 시각화해서 볼 수 있고 채팅 가능함
- server/client 디렉토리의 client.cpp : dummy를 N(defined)개 서버에 접속시키고 매 초당 무작위로 이동 (x,y : -1,1)
- 유니티 클라이언트에서 시각화할때 유의미한 결과를 보여주기 위해서 제공한 기능
- /client 디렉토리는 unity project : 그냥 유니티의 tcpClient로 접속해서 cpp와 csharp간 format만 맞춤
서버와 클라이언트는 각각 패킷 번호를 붙여서 비즈니스 로직마다 구분해서 패킷을 처리함
[서버의 명령어]
- help : 도움말을 표시

- clientCount : 접속한 클라이언트의 수를 표시
- status : 접속한 클라이언트 전체의 좌표를 표시
- detail {socket} : 접속한 클라이언트의 상세정보를 표시

- chatlog : 접속한 클라이언트들의 채팅 내역을 표시

- exit : 서버를 종료
아맞다 빼먹었는데, 서버 자체는 dummy로 확인한 결과 2,000개의 클라이언트까지 CPU 성능을 크게 떨어트리지 않는걸 확인함
근데 유니티 클라이언트에서 확인할때, 300개를 넘어가면 Cordinate 동기화가 이뤄지지 않는다. 비동기 처리 안해서 블로킹된거다
이미 wargame에선 구현된 내용이라, 과제용으로 만든 이 프로젝트를 개선할지는 모르겠음
IOCP 서버의 성능 테스트를 주제로 했는데, 정작 네트워크 서버의 성능 지표나 성능 측정 도구들은 죄다 웹서버쪽밖에 안보임
그래도 소켓 네트워크 속도 측정이나 Latency쪽으로 뒤져보니까 나오긴 하는데 대부분 Ubuntu 환경에서 구동해서 winsock 쓰는 IOCP는 못함
쓰면 Windows OS에서 쓸 수도 있다고 하는데 보기만 해도 안쓰고싶게 생겼음 하나같이;
https://github.com/downfa11/IOCP-with-unity
GitHub - downfa11/IOCP-with-unity: 토이프로젝트 - IOCP server with Unity3d project
토이프로젝트 - IOCP server with Unity3d project. Contribute to downfa11/IOCP-with-unity development by creating an account on GitHub.
github.com
'windows' 카테고리의 다른 글
Windows In Docker - C++ 프로젝트의 컨테이너화 빌드 및 관리 (0) | 2025.02.20 |
---|---|
IOCP(IO Completion Port) 쉽게 이해하기 (0) | 2024.11.22 |
토이프로젝트 - winsock으로 구현한 프록시 서버(winsock2, cpp) (0) | 2024.11.22 |
IOCP GetQueuedCompletionStatus, CreateloCompletionPort 함수의 변경점 (0) | 2024.11.22 |
게임서버 매치메이킹 구현과 기술 세미나 발표 (0) | 2024.11.22 |