• Home
  • About
    • Young's Github Pages photo

      一日不作一日不食

    • About
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

Java 정리 33

02 Jan 2019

Reading time ~1 minute

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


프로젝트 Export

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

01


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

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

02


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

  • UML(Unified Modeling Language) 작성하는 플러그인
    • http://www.objectaid.com/download
    • 이클립스에서 New Software로 설치
  • 설치 후 패키지 매니저에서 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 얻는다.
  • 모든 소켓에서 입력되는 메시지를 모든 소켓에 출력한다.

클라이언트

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

일대일 채팅

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

다대다 채팅

  • 무조건 서버에 OutputStream으로 보내고 서버가 모든 소켓들에게 InputStream으로 다시 보내는 구조.

  • 다대다 채팅 구현 코드



Java