JUINTINATION

HawkTalk - 자바 채팅 프로그램 본문

Toy Project

HawkTalk - 자바 채팅 프로그램

DEOKJAE KWON 2023. 1. 8. 22:11
반응형

프로젝트 개요

  • Java Swing 환경의 텍스트 채팅 애플리케이션으로, Socket 통신과 Multi Thread 프로그래밍으로 구현한 채팅 프로그램
  • 그룹 채팅 및 실시간 그림판 기능을 제공하며 MySQL을 이용하여 유저 정보를 데이터베이스에 저장 및 수정, 삭제 가능

참여 인원

조장 : 이승호(B989037, UI 환경 구축 및 크롤링을 이용한 실시간 날씨 정보 확인 기능과 스레드를 이용한 채팅 기능 구현)

조원 : 권덕재(B989003, 서버와 MySQL을 이용한 DB 구축 및 스레드를 이용한 채팅방과 실시간 온라인 그림판 구현)


주요 기능

  • 로그인/로그아웃 기능, 사용자 등록/수정/삭제
  • 온라인 유저 목록 확인 기능
  • 온라인 채팅 기능
  • 그룹 채팅 기능
  • 온라인 그림판 기능
  • Jsoup을 사용한 실시간 날씨 크롤링 기능

프로그램 구성도

Untitled

클래스 다이어그램


실행시 주의사항

  • jdk 17 버전으로 작성되었으며 mysql connector 라이브러리와 jsoup 라이브러리가 필요함
  • 맥 os 에서 그림판 기능이 작동하지 않는 문제가 있으며 추후 수정 예정 - 수정 완료
  • 다른 ip의 서버에 접속하기 위해 LogInLayout 클래스에 있는 ipAddresslocalhost 에서 서버의 IP주소로 수정하여 사용해야 하며 같은 wifi를 사용하고 있어야 함
  • MySQL 관련 설정이 필요함 (usersDB 스키마에 usertable 테이블이 있어야 하며 root 유저의 비밀번호가 "admin"이 아닌 경우 DB 패키지의 JDBCconnector 클래스에서 변경해야 함)
  • usertable의 구조는 다음과 같음
Name ClassNumber NickName ID Pwd
varchar(10) varchar(10) varchar(10) varchar(10) PK varchar(10)

실행화면과 기능설명

로그인/로그아웃 기능, 사용자 등록/수정/삭제

  • JDBCconnector 클래스를 이용하여 MySQL DB 접속을 통해 사용자의 정보를 저장 및 관리한다.

Untitled 1Untitled 2

온라인 유저 목록 확인 기능

  • 클라이언트가 접속하면 ServerBack 클래스 에 있는 clientThreadList 에 해당 스레드를 추가한다.
  • 그 후 ClientBack 클래스 에서 접속한 클라이언트의 닉네임을 서버로 전송한다.
  • ServerBack 클래스가 받은 닉네임은 nickNameList 에 추가하고 접속중인 모든 클라이언트의 유저목록을 Clear한 후 다시 ServerBack 클래스 에 있는 nickNameList 에 있는 모든 닉네임을 추가한다.

Untitled 3

온라인 채팅 기능

  • 입력창에 보낼 메세지를 입력하고 전송버튼을 누르거나 엔터를 입력하면 해당 메세지는 서버로 전송된다.
  • 메세지를 받은 서버는 모든 클라이언트에게 보낸 유저와 메세지 내용을 전달한다.

Untitled 4

그룹 채팅 기능

  • 채팅방을 만들면 ServerBack 클래스 의 roomMap 에 채팅방의 이름과 새로운 포트번호를 갖는 ServerBack 클래스를 추가한다.
  • 각 채팅방은 각각의 ServerBack 클래스와 통신한다.

Untitled 5

온라인 그림판 기능

  • 채팅방에서 그림을 그리면 해당 좌표를 명령어와 함께 서버로 보낸다.
  • 서버는 해당 좌표와 명령어를 채팅방에 있는 모든 유저들의 GroupChatBack 클래스로 보낸 후 해당 좌표에 실시간으로 그린다.

Untitled 6

Jsoup을 사용한 실시간 날씨 크롤링 기능

Untitled 7


기타 사항

지도교수 : 유동영 교수님

개발환경 :  

사용 라이브러리 : jsoup-1.15.3.jar, mysql-connector-j-8.0.31.jar

제작기간 : 약 4주(18시간 + 개인 개발 시간)

GitHub 및 코드 확인 : https://github.com/juintination/HawkTalk

 

GitHub - juintination/HawkTalk: 자바 채팅 프로그램

자바 채팅 프로그램. Contribute to juintination/HawkTalk development by creating an account on GitHub.

github.com


참고

https://recipes4dev.tistory.com/153

 

소켓 프로그래밍. (Socket Programming)

1. 소켓(Socket) 만약 네트워크와 관련된 프로젝트를 진행하면서, 사용자(User)의 관점이 아닌, 개발자(Developer)의 관점에서 네트워크를 다뤄본 경험이 있다면, "소켓(Socket)"이라는 용어가 아주 낯설

recipes4dev.tistory.com

https://lanace.blogspot.com/2017/08/intellij-swing-1.html

 

IntelliJ로 Swing 개발하기 #1

# 서론 지금 Swing을 시작하려 한다면 말리고싶다... Swing은 거의 사용하지 않는 기술인것같다. 윈도우 프로그램을 만들려면 C#으로 WPF를 사용하던 하는게 훠~~~~~얼 씬 좋을거다... 지금 Swing에 대해

lanace.blogspot.com

728x90

'Toy Project' 카테고리의 다른 글

Project-WorldCloud(Update UI and Add features for hackathon)  (2) 2023.09.24
Project-WorldCloud  (0) 2023.09.03
Project-Artwork-Artist-Classification  (0) 2023.07.01
Algorithm-Design-Assignment  (0) 2023.06.29
Project-CPU-Scheduler  (0) 2023.06.28
Comments