티스토리 뷰

donaricano-btn
반응형

javatalk


  • 개요 : swing을 이용해서 만든 간단한 socket 채팅 애플리케이션
  • 개발인원 : 1명
  • 개발기간 : 7일
  • 사용기술 : JAVA(jdk 1.8), HTML, eclipse 등...
  • github : https://github.com/cheolhyeonpark/javatalk
  • 설명 : Head First Java를 다 읽고 배운 내용을 정리하기 위해 시작한 프로젝트입니다. 서버와 클라이언트는 소켓 통신을 통해 연결되고 message 객체를 주고 받도록 했습니다. GUI는 swing을 이용했고 외부 API(네이버 백과사전 검색) 기능을 넣어 봤습니다.

  • 구현기능 : 
- 서버 접속시 중복 닉네임 체크 / 중복일 때 에러 페이지 출력
- 입장 / 퇴장 시 안내 메세지 출력
- 프로필 이미지(아바타) 설정 가능
- 현재 접속 인원 리스트 출력 (채팅창 상단 메뉴 모양 클릭시 생성)
- 접속 인원 리스트 더블클릭 혹은 '/w' 명령어 직접 입력을 통해 귓속말 전송
- 채팅창 오른쪽 아래에 이미지 아이콘 클릭시 이미지 파일 전송 가능
- 채팅창 오른쪽 아래에 저장 아이콘 클릭시 채팅로그 저장
- '#' 명령 이용해서  네이버 백과사전 검색 (예 : #서울)
- 서버 종료시 네트워크 오류 출력

  • 클래스 :
- javatalk.client.ClientLauncher : 클라이언트 실행
- javatalk.client.Listener : 서버로 부터 전송되는 메세지 수신
- javatalk.client.Sender : 서버로 메세지 송신
- javatalk.frame.AppFrame : 애플리케이션 실행 창
- javatalk.frame.ChatPanel : 채팅 화면
- javatalk.frame.ErrorPanel : 에러 화면
- javatalk.frame.LoginPanel : 최초 접속 화면
- javatalk.frame.ProfileFrame : 프로필(아바타) 선택 창
- javatalk.model.ChatCommand : 채팅 명령어 열거 타입
- javatalk.model.FilePath : 이미지 파일 저장 위치 열거 타입
- javatalk.model.Message : 서버와 송수신 하는 메세지 객체를 만드는 클래스
- javatalk.model.TypeOfMessage : 메세지 종류 열거 타입
- javatalk.model.User : 사용자 정보를 담는 클래스
- javatalk.server.Handler : 서버측으로 송신되는 메세지를 수신하고 메세지 타입에 따라 작업 후 다시 클라이언트로 전달
- javatalk.server.ServerLauncher : 서버 실행
- javatalk.util.FileChooserUtil : 파일 탐색기
- javatalk.util.FileSaveLoadUtil : 파일 저장 / 로드
- javatalk.util.HTMLMaker : 채팅 대화창에 표시되는 메세지의 표시 양식을 지정하기 위한 HTML 코드 생성기
- javatalk.util.NaverSearching : 네이버 검색 API
- javatalk.util.UserList : 접속자 리스트 관리

  • 느낀점 : 

Head First Java를 읽으며 새롭게 알게 된 내용을 최대한 활용하고자 했지만 애플리케이션의 규모가 작아서인지 아직 저의 객체지향에 대한 이해가 부족해서 인지 상속이나 다형성등의 개념을 사용하지 못하고 그저 기능구현에만 신경쓴 모양세가 되었습니다.

생소한 swing을 이용해 GUI를 구성하는 부분도 어려운 점 중 하나였습니다. 모르는 것을 찾아보려고 해도 사용하는 사람이 없다보니 필요한 개념이나 코드를 찾기 힘들어 작은 기능을 구현하는데 조차 많은 시낭이 소모되었습니다.

그러나 하나씩 상상하던 기능을 구현할 때 마다 성취감을 느낄 수 있었고 그 과정을 재미있게 수행했습니다. 단순히 기능 구현에서 끝나지 않고 가독성 높은 코드를 만들 수 있게 노력했습니다. 

이런경험이 다음 프로젝트를 수행할 때도 도움이 될 수 있을 것이라고 생각합니다.


ScreenShot



첫 화면


중복 닉네임 선택시 오류 출력


프로필 이미지 선택


프로필 이미지 선택 후


접속자 리스트 출력


채팅


귓속말 기능 /w 명령어, 리스트 더블 클릭


전송 이미지 선택 / 로그 파일 저장시 사용되는 파일탐색기


이미지 파일(png, jpg) 전송


#검색어 명령을 통해 네이버 백과사전 내용 검색 가능


네트워크 에러 메세지 출력


반응형
donaricano-btn
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함