GitHub - kimdevv/Chat
Contribute to kimdevv/Chat development by creating an account on GitHub.
github.com
주로 사용한 것들: JFrame, JDBC(MySQL), Socket
학교에서 컴퓨터 네트워크 이론과 데이터베이스를 배우면서 뭔가 깨달음을 얻고(…) 간단하게 만들어 본 채팅 프로그램.
말은 간단하다고 했지만 사실 내가 많이 부족해서인지 거진 2주 정도 걸린 듯…? ㅋㅋㅋㅋㅋㅋ 열심히 안 한 것도 있긴 한데…
학교에서는 소켓이랑 TCP UDP 등등… 되게 복잡했던 거 같은데 자바에서는 그냥 소켓만 구현하면 통신이 바로 되네여…? 생각보다 어렵지 않게 만들었읍니다.
제일 어려웠던 건 jar을 빌드했을 때 한글이 깨져서 나온 점…? 이 부분은 BufferedReader과 PrintWriter에서 바로 인코딩을 EUC-KR로 써주면 해결이 되는 문제였는데 굉장히 오래 걸렸다는 것….ㅋㅋ
여튼 실행 방법은
ChatServer을 작동시켜서 서버를 켜준 후
ChatClient를 작동시키면 채팅 클라이언트가 켜지는데, 여기서 id와 password를 입력하고 접속하면 됩니다.
작동 원리는 클라이언트에서 메시지를 보내면 서버가 처리하는 되게 일반적인 형태인데
컴퓨터 구조에서 배운 OPcode 개념을 좀 써서…ㅋㅋ
아마 기억은 안 나는데 로그인의 경우 opcode 0, 회원가입의 경우 opcode 1, 채팅 메시지의 경우 opcode 2를 붙여서 서버로 메시지를 전송시킨 후에 서버가 그 opcode를 보고 해당하는 로직을 처리하게 했습니다.
저는 MySQL를 썼는데 고버전은 설치하기 귀찮아서(…) 그냥 구버전을 썼읍니다.
그래서 JDBC를 사용하기 위해 필요한 dependency도 조금 구버전이네여…ㅋㅋㅋ 깃헙에 같이 올려두긴 했습니다.
필요한 행은 id, password, nickname인데 그냥 제가 SQL 파일 올려 놔서 그대로 사용하시면 될 듯 하네여…?
( 스프링을 조금이라도 배우고 이걸 보니까… dependency를 굳이굳이 이렇게 불러왔어야 했나 싶기도 하고…ㅋㅋㅋ뭐 이 때엔 스프링을 1도 몰랐으니까~~ )
아 그리고 ChatClient는 제가 왜 그랬는지는 모르겠는데 UI 부분을 따로 분리해 놔서…ㅋㅋㅋ
대체 왜 저렇게 만들었지…? 그냥 ChatClient.java 안에 하나로 합쳐도 됐을 텐데…
여튼… 번거로우실까봐 빌드한 jar 파일을 따로 깃헙에 넣어두긴 했읍니다 그래서 IDE에서는 ChatServer만 불러오셔두 댑니다!



여기까지는 클라이언트 부분 사진이고

이거는 서버 부분입니다
작성일자: 2023-11-18
'프로젝트 > 기타 릴리즈' 카테고리의 다른 글
[Etc] 네트워크 관리사 2급 실기 단답형, 라우터 기출 문제 모음집 프로그램 (0) | 2024.01.20 |
---|