아티클 목록

Java 정리 33

2019년 Java 학습 과정에서 프로젝트를 가져오고 내보내는 방법부터 URL 인코딩, 멀티채팅 구현까지 이어서 실습한 기록입니다. Java 문법을 작은 예제로 확인하고 네트워크 프로그램으로 확장하며 배운 내용을 한 문서에 남겼습니다. 현재 Java 개발 방식과는 다를 수 있지만, 기초를 실제 구현으로 연결하던 과정으로 참고해주세요.

Java 정리 33 - 프로젝트 Import, Export, URLEncoder, URLDecoder, 멀티채팅 구현


프로젝트 Export

  • 패키지 익스플로어에 프로젝트 선택 - Export
  • 파일 시스템 선택
  • 빼낼프로젝트 선택, 경로선택
  • 해당 경로로 파일시스템이 Export됨

01


Export된 파일시스템 workspace에 추가하기

  • 새로운 프로젝트 생성
  • Use default location 체크해제, 새로운 파일시스템 선택
  • Export된 파일시스템 내용이 프로젝트로 workspace에 Import된다.

02


클래스다이어그램 작성 플러그인

  • UML(Unified Modeling Language) 작성하는 플러그인
  • 설치 후 패키지 매니저에서 New-Others에서 ObjectAid UML Diagram 중 Class Diagram 선택 생성
  • 그리고 클래스파일들을 드래그해서 만들어진 창에 올리면 클래스다이어그램이 자동으로 생성된다.

03


URLEncoder,URLDecoder

  • java.net 패키지에서 제공하는 클래스, 객체생성 못 함
  • 문자열 값을 URL을 통해 내보낼 수 있도록 변경하는 일
    • 문자열은 2byte거나 그 이상
      • 각 패킷은 1byte
      • 2바이트 이상인 문자열을 %코드값으로 변경(인코딩)하여 1바이트 패킷으로 전송해야 함.
        • %16진수 => %AA 이런 식
  • jsp/ servlet 개발 시 사용

04

String encodedStr = URLEncoder.encode("문자열", "인코딩할charset명");
 
String decodedStr = URLDecoder.decode("인코딩된문자열", "decode할charset명");
public class UseURLEncoder {
     public static void main(String[] args) {
           String msg = "abc가나다def123"; // MS949
           // 네이버 검색 시 URL 쿼리  query=abc%EA%B0%80%EB%82%98%EB%8B%A4def123
           try {
                // 입력된 문자열을 웹에서 사용하는 형태의  코드값으로 변경
                // MS949 -> 웹에서 사용하는 UTF-8 형식의  코드값으로 변경
                String encodedMsg = URLEncoder.encode(msg,  "UTF-8");
                System.out.println("인코딩 : "+encodedMsg);
                
                String decodedMsg =  URLDecoder.decode(encodedMsg, "UTF-8");
                System.out.println("디코딩 : "+decodedMsg);
           } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
           }
     }
}

05


채팅프로그램 구조

서버

  • port열고, 클라이언트로부터 모든 소켓을 받는다.
  • 각 소켓에서 Stream 얻는다.
  • 모든 소켓에서 입력되는 메시지를 모든 소켓에 출력한다.

클라이언트

  • 서버에 접속하여 스트림을 연결한다.
  • 사용자의 동작이 있을 때 메시지를 서버로 보낸다.
  • 서버에서 출력되는 메시지를 읽어들인다.

일대일 채팅

  • 내 대화를 내창에 올리고 접속자에게 보내주면 됨

다대다 채팅

댓글