일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- vector size
- suffix return type
- std::cout
- std::vector
- placement new
- base from member
- conversion constructor
- increment operator
- virtual function
- std::ostream
- diamond inheritance
- return by reference
- virtual destructor
- delete function
- discord bot
- operator overloading
- 더 지니어스 양면포커
- this call
- new&delete
- C++
- c++ multi chatting room
- virtual function table
- vector capacity
- pointer to member data
- member function pointer
- std::endl
- dynamic_cast
- constructor
- virtual inheritance
- c++ basic practice
- Today
- Total
목록전체 글 (99)
I'm FanJae.
1. 방 로직 개선 1-1. 방의 인원수 제한 처리① 생성 - 앞서 포스트에서 다뤘던 것처럼 현재 방에서는 방의 인원수 제한 처리가 필요했다.- 관전자를 추가할까 고민하였으나, 우선은 관전자가 없는 형태로 처리할 것이다. chatRooms[message].insert(socket);Room_count[message] = 0;std::shared_ptr roomGameManager = std::make_shared(roomName);gameManagers[roomName] = roomGameManager;send_message = roomName;- 방을 생성할 때 Room_count를 초기화 한다.- 현재 서버의 Logic에 의해서 방을 생성시 입장도 동시에 일어나기 때문에 입장하는 부분에서 Room_..
1. Server 로직 개선 1-1. 서버 입장 및 퇴장시 ID 정보 처리.- 입장 처리if (chatRooms.find(roomName) != chatRooms.end()){ send_message = roomName; chatRooms[message].insert(socket); for (SOCKET target_socket : chatRooms[this->roomName]) { if (socket != target_socket) { join_message = this->ID + " Joined."; send(target_socket, join_message.c_str(), join_message.length(), 0); } }}else{ send_message = NOT_EXIST_RO..
1. Client 및 Server 정보- 기본적인 서버는 이전에 구현했던 서버와 코드를 활용하였다.- Github(Server)- Github(Client)2. 서버 정보 (게임 관련 필요 정보) 2-1. 게임에 필요한 기본적인 정보 추가(foundation.h)// 유저 이름과 승리 횟수 표기class User{private: std::string name; int winCount; int chips;public: User(std::string name, int winCount) : name(name), winCount(winCount), chips(0) { } std::string getName() const { return name; } int getwinCount() const { retur..
1. 프로젝트 선택 이유- 이전부터 이 게임을 한번 구현해보고 싶었는데 마침 User vs User로 붙는 형태로 제작한 사람이 없었다.- 따라서, 기존에 진행했던 Multi Room Chatting Server를 잘 활용해서 이 프로젝트에서 이용해 보려고 한다. 2. 개발 환경- 언어 : C++ (Server), C#(Client)- 운영체제 : Windows 3. 서버 아키텍처- 클라이언트-서버 모델- 프로토콜 : TCP/IP- 서버는 멀티 스레드 방식으로 다중 클라이언트의 요청을 처리한다. 4. 라이브러리C#(UI) : Windows FormsC++ : std::thread ※ 양면 포커의 룰은 더 지니어스:블랙가넷/4화를 기준으로 만들 예정이다.링크 : 규칙 관련 링크(나무위키)
1. 프로젝트 요약- Multi Thread를 이용한 Multi-Chatting Room을 제공하는 서버이다. 1) 개발 환경 : C++(Server), C#(Client) OS : Windows2) 서버 아키텍처 : 클라이언트-서버 모델, 프로토콜 : TCP3) 라이브러리 : C#(UI Windows Forms), C++ (std::shtread) 2. 서버 구조※ 전체적인 흐름으로 보면 다음과 같다.- 연결이 수락된 이후 시점에서 ConnectClient()가 주기적으로 반복 메시지를 받아준다.- 이후 ClientEventHandler 객체에서 각 Event에 맞는 행위를 수행한다. 1) Worker-Thread : ConnectClient(SOCKET socket)void ConnectClient(..