[JAVA] 네트워크를 통한 실시간 그림판/채팅방 구현
Projects/Projects

[JAVA] 네트워크를 통한 실시간 그림판/채팅방 구현

이 프로젝트는 필자가 2019년 2학기 수업에 들은 "JAVA 프로그래밍 및 실습"(담당교수: 박현석 교수님) 시간에 작성한 기말 프로젝트입니다. 코드를 함부로 이용하시면 저작권에 위배되오니 참고용으로만 이용해주세요!:)

총 2가지를 구현하고자 하여 각각 구현하게 되었습니다. 밑에 그림 참고해주세요!(코드에 주석처리로 설명을 다 써놓은 상태입니다.)

코드는 여기(Github) 를 눌러서 확인해주세요!

 

Project A: 실시간 채팅이 가능한 그림판

 

간단 툴 정리

1. JTabbedPane 활용을 통한 그림판에 필요한 도구들 상단에 모아놓기 + ColorIcon, GridBagLayout 활용

2. JColorChooser을 통한 색깔 선택, JFileChooser를 통한 파일 열기/저장

 

구현방법 | PrintWriter와 BufferedReader를 통해서 메시지를 주고받는 형식으로 진행되었다. 받은 메시지를 jtextarea에 추가하고, 화면을 업데이트(validate)하는 함수를 통해 실시간으로 이루어지도록 설계하였다. 실시간이 되도록 받을 메시지들은 while문안에 넣어서 계속 readLine하도록 구현하였고, send 버튼을 통해서 전송이 가능하도록 하였다.

Project A

 

 

Project B: 서버와 네트워크가 실시간으로 교류할 수 있는 그림판

 

간단 툴 정리

              Server가 그림을 작성하면 실시간으로 Clinet 그림판에 올라오는 방식

                     : ObjectOutputStream. ObjectInputStream. Seralizable을 이용

 

구현 방법 | 프로젝트에서 실제 그림판을 구현하고자 하였습니다. 이에 더불어 서버와 클라이언트에게 실시간 그림판을 구현하는 프로그램을 만들고자 하였습니다. 그래서 파일 저장/읽기에 응용하여 (PrintWriter나 BufferedReader에 나아가) Object를 가지고 소통할 수 있는 ObjectOutputStream, ObjectInputStream을 이용한 그림판 구현을 이용하고자 하였습니다.

 

문제점 | 실시간 그림판을 구현하는 부분은 총 2가지로 나뉘는데, Client에서 Server(Object 전송, Object 업데이트)과 Server에서 Client(Object 전송, Object 업데이트)라고 할 수 있습니다. Server에서 Client로 전송하는 부분에서는 전송과 업데이트 부분 모두 성공하였지만, Client에서 Server부분에서 Object 전송 부분은 성공하였지만 업데이트 부분에서 Server에서 ObjectInputStream에러(NullPointerException)이 계속 발생하였습니다. 이를 위해, while문을 이용하여 계속 ObjectInputStream을 계속 업데이트하는 방식을 이용하여 문제점을 해결하려고 하였으나, 결국에는 풀지 못하였습니다.(문제점은 주석처리 부분으로 확인 가능합니다!)

 

Project B