Java 정리 33
02 Jan 2019
Reading time ~1 minute
Java 정리 33 - 프로젝트 Import, Export, URLEncoder, URLDecoder, 멀티채팅 구현
프로젝트 Export
- 패키지 익스플로어에 프로젝트 선택 - Export
- 파일 시스템 선택
- 빼낼프로젝트 선택, 경로선택
- 해당 경로로 파일시스템이 Export됨
Export된 파일시스템 workspace에 추가하기
- 새로운 프로젝트 생성
- Use default location 체크해제, 새로운 파일시스템 선택
- Export된 파일시스템 내용이 프로젝트로 workspace에 Import된다.
클래스다이어그램 작성 플러그인
- UML(Unified Modeling Language) 작성하는 플러그인
- http://www.objectaid.com/download
- 이클립스에서 New Software로 설치
- 설치 후 패키지 매니저에서 New-Others에서 ObjectAid UML Diagram 중 Class Diagram 선택 생성
- 그리고 클래스파일들을 드래그해서 만들어진 창에 올리면 클래스다이어그램이 자동으로 생성된다.
URLEncoder,URLDecoder
- java.net 패키지에서 제공하는 클래스, 객체생성 못 함
- 문자열 값을 URL을 통해 내보낼 수 있도록 변경하는 일
- 문자열은 2byte거나 그 이상
- 각 패킷은 1byte
- 2바이트 이상인 문자열을 %코드값으로 변경(인코딩)하여 1바이트 패킷으로 전송해야 함.
- %16진수 => %AA 이런 식
- 문자열은 2byte거나 그 이상
- jsp/ servlet 개발 시 사용
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();
}
}
}
채팅프로그램 구조
서버
- port열고, 클라이언트로부터 모든 소켓을 받는다.
- 각 소켓에서 Stream 얻는다.
- 모든 소켓에서 입력되는 메시지를 모든 소켓에 출력한다.
클라이언트
- 서버에 접속하여 스트림을 연결한다.
- 사용자의 동작이 있을 때 메시지를 서버로 보낸다.
- 서버에서 출력되는 메시지를 읽어들인다.
일대일 채팅
- 내 대화를 내창에 올리고 접속자에게 보내주면 됨
다대다 채팅
-
무조건 서버에 OutputStream으로 보내고 서버가 모든 소켓들에게 InputStream으로 다시 보내는 구조.