• 티스토리 홈
  • 프로필사진
    Song hyun
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
Song hyun
  • 프로필사진
    Song hyun
    • 분류 전체보기 (780)
      • 백준 (0)
      • 영어 (2)
        • Diary (0)
        • Toast Masters (2)
      • 메모 (13)
      • 설치 메뉴얼 (30)
      • Java (178)
      • MySQL (60)
      • JSP (67)
      • Springboot (46)
      • HTML,CSS, JS (71)
        • HTML (8)
        • CSS (12)
        • JavaScript (37)
        • HTML&CSS 스터디 (13)
      • C++ (7)
      • Linux (7)
      • JPA (34)
      • Kotlin (2)
      • Flutter (42)
      • Error Note (39)
      • 디자인 패턴 (12)
      • 디지털논리회로 (4)
      • 데이터베이스 시스템 (8)
      • 알고리즘 (7)
      • 운영체제 (3)
      • 이산수학 (3)
      • 인공지능 (1)
      • 자료 구조 (14)
        • 기본 개념 (14)
        • 자료구조 스터디 (0)
      • 💡My project (76)
        • 팩맨 : Java Swing 게임 제작 프로젝트 (6)
        • 네이트톡 : Java 소켓 통신 프로젝트 (4)
        • 포켓옥션 : HikariCP&JDBC CRUD 프.. (3)
        • 이지 부산 : BDIA-Devton 2024 프로.. (20)
        • 그린 유니버시티 : JSP를 사용한 학사관리 프로.. (1)
        • 애드 포커 : 웹 소켓과 Spring을 사용한 카.. (1)
        • 셸위 : 게임 친구 매칭 사이트 (21)
        • 다모아 : 개발자 중개 플랫폼 (20)
      • 📗스터디 (13)
        • CNN : 웹개발 스터디 (10)
        • Node&React로 유튜브 사이트 만들기 (3)
      • 📙독서 및 강연 기록 (36)
        • 강연 (14)
        • 독서 (22)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • 개인 프로젝트(1) -<소켓 통신을 이용한 채팅 프로그램 만들기(4)>
        2024년 05월 31일
        • Song hyun
        • 작성자
        • 2024.05.31.:51
        728x90
        반응형

        개인 프로젝트(1) -<소켓 통신을 이용한 채팅 프로그램 만들기(4)>

        1. 현황과 구현해야 할 기능 정리

        2. 프로젝트 정리

        3. 돌아보기

        4. 깃허브 및 영상 자료


        1. 현황과 구현해야 할 기능 정리

        -현황: 서버소켓-소켓 연결, 방 생성 및 퇴장, 채팅 기능 구현

        -구현하고 싶었던 기능(목표): 이모티콘 및 사진 파일 전송, 서버 관리자 기능 추가, 채팅 로그 저장 기능 추가

         

        자바 소켓 통신 프로그램 만들기의 마지막 날이다. 부족한 부분들이 많았지만 마지막까지 최선을 다하고 싶었다.

         

        전날 두 시간 내내 붙잡고 있던 이모티콘 전송, 사진 파일 전송, 서버 관리자 기능 추가(방 삭제, 멤버 강퇴, 채팅 로그 읽기 등등), 채팅 로그 저장 등을 구현하고 싶었지만... 시간적인 한계 때문에 모두 구현하지 못했다. 

        프로젝트가 끝난 뒤라도 코드를 더 추가하여, 기능을 보강하고 싶었기 때문에 보이는 부분만으로라도 틀을 잡아두었다.

         

         그리고 어제, 서버Frame-tabbedPane의 화면이 제대로 보이지 않는 오류가 있었는데, 다시 천천히 읽어보니 내가 다른 panel을 연결해두어서 그랬던 것이었다. 수정하니, 내가 구상한 것처럼 화면이 제대로 나왔다. 기본적인 오류를 정리하고 나니, 마감기한이 다 되어 프로젝트를 마무리하게 되었다.


        2. 프로젝트 정리

        (1) 구현 기능 및 인터페이스 

         

        구현된 기능은 아래와 같다. 내가 초등학생 시절 사용하던 추억의 채팅 프로그램, '네이트온'을 다시 구현해보고 싶어, 실제 네이트온의 기능들을 참고하며 작성했다. 운세 기능이나 이모티콘 기능도 그 일부이다. 

        서버 클라이언트
        서버 소켓-소켓 연결 소켓 생성-입장
        클라이언트 입-퇴장/채팅 로그 확인 채팅방 생성-입장
        - 채팅 송수신
        - 운세 기능

         

        (2) 사용한 코드 및 명령어들

        -소켓 통신: 서버 소켓 및 포트, IO 스트림

        -GUI: Java Swing(JTextField, JButton, JTabbedPane)

        -이미지: 카카오톡 춘식이 이모티콘, 네이트온 아이콘, Pixabay 무료 이미지 등

         


        3. 돌아보기

        (1) 소감 : 배운 것도, 아쉬움도 많은 첫 개인 프로젝트

        -프로젝트 전까지 자바 SWING/소켓-서버 소켓/소켓 통신의 개념이 많이 어려웠다. 프로토콜 같은 경우는 그 개념이 뚜렷하지 않아 내심 고민이 많았다. 이번 프로젝트를 통해 자바 SWING/소켓 통신의 개념에 대해 다시 되짚어볼 수 있어 좋았다. 특히 프로토콜을 사용해 프로그램을 구현할 수 있어 기뻤다. 하지만 아직도 많이 어려운 개념이라 공부가 더 필요할 것 같다.

         

        -사실 처음 1, 2일 동안에는 예제 코드들을 읽어도 그 개념과 흐름이 잘 이해가 되지 않아서 정말 답답했다. 내가 생각하던 코드의 흐름은 있었지만, 그 과정들이 흐리뭉실하고 자세하지 않았어서 구현에도 어려움이 많았다. 처음에는 다른 사람들이 쓴 코드를 무작정 따라 쓰다가, 이건 아니다! 싶은 생각이 들어, 대략적으로라도 '내가 구상한 프로그램의 작동 흐름'를 공책에 적어두고, 직접 코드를 작성하다 모르는 부분이 있으면 타인의 코드를 참고하는 방향으로 진행했다. 잘 이해가 가지 않거나/어렵거나/왜 이렇게 썼는지 잘 모르겠는 코드가 나오면 체크해두고 다시 읽어봤다.

         

         확실히 이렇게 하니, 코드를 따라 적더라도 왜 이런 코드를 적었는지 이해가 되어 좋았던 것 같다. 코드의 흐름을 따라가는 방식으로 오류를 점검하니, 오류 수정도 조금 더 수월했던 것 같다..

         

         

        (2) 잘했던 점: 끝까지 포기하지 않기, 코드의 흐름 생각하기, 로깅과 디버깅

        -나는 어려운 부분이 나오면 쉽게 포기하는 편이다. 대학생 시절부터 이 부분을 지적받았기 때문에, 이번 프로젝트를 하며 그 부분을 조금이라도 발전시키는 것이 내 또 다른 목표였다. 그래서 이해가 가지 않는 코드도 몇 번을 받아적고, 다이어그램을 그려가며 공부했다. 마지막 날에는 거의 8시간 동안 이 코드만 붙잡고 있었던 것 같다. 그랬더니 처음에는 처음 본 외국어처럼 이해가 안 가던 코드도 이해가 되기 시작했는데, 그게 무척 기뻤던 것 같다. 

         

        -저번 프로젝트에서는 흐름을 생각하기 보다는 '당장 구현해야 하는 기능'에 중점을 두고, 부분적인 코드에 많이 집중했었다. (첫 프로젝트라 더 정신이 없었던 것 같다....) 이번에는 코드 작성 중간중간/오류가 발생했을 때, 디버깅/로깅을 더욱 적극적으로 썼던 것 같다. 이게 코드의 이해나 오류 수정에도 도움이 많이 되었던 것 같다고 느꼈다.

         

         

        (3) 아쉬웠던 점: 코드 리뷰 더 많이 읽기, 기능이 적더라도 튼튼한 프로그램 만들기

        -다른 분들의 발표를 들으며 느낀 건데, 내가 작성한 코드에는 사용하는 구문이나 명령어/컴포넌트에 대한 깊은 이해가 많이 부족하다고 느꼈다. 그리고 생각보다도 프로토콜/IO 스트림을 사용하는 데에도 많은 방법이 있었는데, 조금 더 폭넓게 생각하지 못했던 것 같아서, 그게 많이 아쉬웠다. 다른 사람의 코드를 보는 게 중요하다는 말이 이런 뜻이구나 싶었다. 

         

        -많은 기능을 만들고 싶은 욕심에, 기존의 기능들을 더욱 튼튼하게 만들지 못했던 것 같다. 선생님께서도 강조하신 부분이 '적은 기능을 구현하더라도 튼튼하고, 오류가 적은 프로그램을 만드는 것'이었다. 다음에는 적은 기능을 만들더라도, 오류나 예외를 많이 줄이는 것을 목표로, 프로그램을 만들고 싶다.

         


        4. 깃허브 및 영상 자료

        구현한 코드, 작동 영상은 아래 링크에서 찾아볼 수 있다.

        (1) 깃허브 주소: https://github.com/Greenery367/makeChat

         

        GitHub - Greenery367/makeChat

        Contribute to Greenery367/makeChat development by creating an account on GitHub.

        github.com

         

        (2) 유튜브 주소: https://www.youtube.com/watch?v=GEcb4PC9ueg

         

        (3) 영상 (티스토리)

         

         

        728x90
        반응형

        '💡My project > 네이트톡 : Java 소켓 통신 프로젝트' 카테고리의 다른 글

        개인 프로젝트(1) -<소켓 통신을 이용한 채팅 프로그램 만들기(3)>  (0) 2024.05.30
        개인 프로젝트(1) -<소켓 통신을 이용한 채팅 프로그램 만들기(2)>  (0) 2024.05.29
        개인 프로젝트(1) -<소켓 통신을 이용한 채팅 프로그램 만들기(1)>  (0) 2024.05.24
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바