본문 바로가기

Project/socket_chat_server6

[CPP] 소켓 통신 채팅 서버 만들기 - 클라이언트 구현하기 이제 클라이언트 쪽 코드를 만들면된다. 기능은 서버에 연결, 메시지 송수신 정도로 간단하게 구현했다. #ifndef CLIENT_HPP #define CLIENT_HPP #include #include #include #include #include class ChatClient { public: ChatClient(const std::string& ip, int port, const std::string& nickname) : ip_(ip), port_(port), nickname_(nickname) { initializeWinsock(); connectToServer(); } ~ChatClient() { cleanup(); } void startChat(); void start(); private: .. 2024. 3. 21.
[CPP] 소켓 통신 채팅 서버 만들기 - 서버 구현하기 이번 구현에서는 아래와 같은 ChatServer 클래스를 통해 구현하였다 class ChatServer { public: ChatServer(unsigned short port); ~ChatServer(); void start(); private: unsigned short port_; SOCKET listeningSocket_; std::vector clientSockets_; std::mutex driverMutex; void initializeWinsock(); std::map loadEnv(const std::string& envFilePath); void saveMessageToDatabase(const std::string& message); void setupServerSocket(); vo.. 2024. 3. 21.
CHAT_SERVER 구축 - driver->connect(), abort() error 이번에 서버 코드를 짜면서 가장 어려웠던 부분은 sql과 서버를 연결해주는 방법이었다. mysql cpp connector를 사용하기로 정했는데, 막상 라이브러리 경로를 알맞게 설정해주고 lib파일도 알맞게 넣었는데도 불구하고 서버와 db의 연결에 실패해서 애꿎은 코드와 설치 환경만 엄청나게 고쳤다. 거의 꼬박 하루를 써서 방법을 찾았는데, 동적 라이브러리 사용이 아닌 정적 라이브러리를 사용하는 방식으로 해결했다. https://www.youtube.com/watch?v=a_W4zt5sR1M cpp / mysql connector 설정방법 위의 영상에 나온대로 따라 했더니 문제 없이 작동했다. 실행이 되지 않았던 이유를 찾아 보았는데, 동적 라이브러리는 실행 시점에 해당 라이브러리를 찾아 로드하지만, 정.. 2024. 3. 20.
[CPP] 소켓 통신 채팅 서버 만들기 - 기본 기능 구현하기 - client client 코드도 마찬가지로 따라하면서 분석하며 공부를 진행했다. 아래는 코드를 참고한 블로그의 주소이다. https://a-researcher.tistory.com/122 [c++] TCP/IP 서버 클라이언트 설명 및 예제 코드 (소켓 프로그래밍) TCP(전송 제어 프로토콜)는 두 컴퓨터 간의 안정적인 통신을 설정하는 데 사용됩니다. TCP 서버와 클라이언트 코드를 통해 두 컴퓨터 간의 데이터를 전송할 수 있습니다. 이 문서에서는 C++로 작성 a-researcher.tistory.com 우선 클라이언트도 서버와 마찬가지로 통신을 위한 소켓을 생성해야한다. socket(AF_INET, SOCK_STREAM, 0) 서버와 마찬가지로 IPv4 프로토콜, TCP, 기본 프로토콜을 사용하는 소켓을 생성 한.. 2024. 3. 18.