[팀 프로젝트] 코코아톡 (PC 메신저 프로그램)

heegon·2025년 7월 21일
0

프로젝트

목록 보기
2/4
post-thumbnail

📌프로젝트 개요

프로젝트 깃허브 레포지토리 (코드)

https://github.com/Lee-Dimension/KokoaTalk

프로젝트 목표

  1. 실시간 채팅 프로그램을 Java만으로 제작해보기
  2. 카카오톡과 최대한 비슷하게 만들기

프로젝트 기간

25년 7월 15일 - 25년 7월 18일 (4일)

인원

팀원 1 : (본인) 김희곤 (채팅창 UI 및 대화 기능 구현)
깃허브 링크 -> https://github.com/heegon02
팀원 2 : 이차원 (친구 목록과 대화방 목록 UI 구현, 파일 입출력을 통한 데이터 처리 담당)
깃허브 링크 -> https://github.com/Lee-Dimension

Stack

언어 : Java (IDE : eclipse)
GUI (자바 Swing과 awt를 이용 : 주로 Swing을 사용)
통신 (자바 Socket)


📌초기 설계

초기 설계 : 구현할 목표 기능

초기 설계 기능들

초기 설계 : 사용자 ui 도안

초기 ui 설계


📌구현 기능

설계 단계에서의 모든 기능을 구현하지는 못 했다.
  1. 회원가입, 로그인
  2. 친구 목록 화면 구현 (즐겨찾기, 친구등록, 친구삭제)
  3. 채팅 목록 화면 구현 (채팅방 사용자들끼리의 동기화)
  4. 채팅창 화면 실시간 소통 구현
  5. 배너 광고 삽입 공간 마련

📌사용자 사용 시나리오

1. 로그인

  • RunClient.java (클라이언트 시작 파일) 실행 -> UserLoginGUI.java 실행
  • 사용자가 로그인 정보 (사용자 id) 입력 -> 서버로 전송
  • 서버 (ClientHandler) 에서 인증 처리
  • 메인 화면 (MainFrame.java) 실행

2. 친구 목록 화면 / 채팅방 목록 화면 / 채팅창 화면 출력

  • 메인 화면 (MainFrame.java) 에서 하단에 버튼 처리를 받아서 카드 레이아웃으로 친구 목록 화면 혹은, 채팅 목록 화면 둘 중에 하나를 출력할 수 있다. 이때 서버가 data/ 폴더 아래에 있는 friendlist/ (친구 목록), chatrooms/ (채팅방 목록), messages/ (채팅방 메시지) 에서 데이터 읽어와 전송.

  • 해당 데이터를 클라이언트가 gui 로 표시.

3. 채팅 메시지 실시간 송수신

  • 사용자가 메시지 입력 -> 서버로 전송
  • 서버는 해당 채팅방의 모든 참여자에게 메시지 브로드캐스트
  • 각 클라이언트는 메시지 수신 후 채팅방에 표시
  • 서버는 메시지를 data/messages/ 에 직렬화하여 저장.

📌프로그램 ui 구조

📍MainFrame

메인프레임

📍ChattingMainFrame

채팅창


📌 파일 입출력으로 DB 역할 구현

⭐ data/user/

.ser (직렬화 파일)
사용자 정보 저장
유저 전체 목록 정보

⭐ data/chatrooms/

.ser (직렬화 파일)
채팅방 생성 및 채팅방별 참여자에 대한 정보 저장
채팅방 전체 목록 정보

⭐ data/messages/

.ser (직렬화 파일)
채팅방별 메시지 (채팅 내역) 저장 담당
채팅방별 메시지 내역 정보


📌 프로젝트 후기

ui 구현까지는 구글링과 손코딩을 통해서 작업을 했다. 기본적인 개념만 알고 있다면 기본 문법과 패키지, api 등은 구글링을 통해서 모두 해결할 수 있었다. 머릿 속에 애매하게 자리잡았던 JFrame, JPanel 등 gui 구조에 대해서 확실히 알게 되었다.

목요일이 되자 금요일까지 프로젝트 결과가 나와야 한다는 압박감에 소켓 통신에 대해서는 자세히 공부할 시간이 없었다. 일단 Ai를 이용해서 채팅 프로그램으로서의 최소 기능들만 구현해 놓았다. 추후에 소켓 통신과 네트워크 부분을 학습하여 Java 카테고리에 정리해 놓을 생각이다. 코딩은 확실히 프로젝트를 진행하면서 실력이 늘 수 있는 것 같다. 앞으로는 프로젝트에 시간을 좀 더 할애하여 공부가 온전히 될 수 있도록 노력할 것이다.

profile
❤️

0개의 댓글