ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java Communication] 메세지 클래스
    Project 2010. 3. 9. 18:59

    팀프로젝트를 미리 준비하면서 만들어 본 통신 클래스...;

    복잡했던 스레드 이런걸 단방에 해결해 주도록 만들었습니다.

    1:n의 통신이 가능하게 하였으며... 중요 클래스를 건드리지 않고

    이벤트를 작성하는 형식으로 만들어 보았습니다.

    아직 부족한게 많고 허접할거 같지만... 


    일단 처음으로 통신과정 중에 왔다 갔다할 객체를 메세지라고 하여 만들었습니다.

    그리고 그 메세지 클래스를 상속받아서 구체적인 메세지들이 구현이 됩니다.

    --- Message.Java ---

    package yhg.comm.message;
    
    import java.io.Serializable;
    
    /**
     * 통신 중에 주고 받는 메세지
     * 
     * @author	Yoon HyunGook
     * @since	2010-03-08
     */
    public class Message implements Serializable {
    	private static final long serialVersionUID = 5795268628773097426L;
    	private int number;
    	private int type;
    
    	/**
    	 * 미리 정해진 메세지 타입
    	 * 필요시에 추가 하면됨
    	 */
    	public final static int type_MSGTable = 1;
    	public final static int type_MSGBoolean = 2;
    	public final static int type_MSGChat = 3;
    	public final static int type_MSGEnterClient = 4;
    	public final static int type_MSGLeaveClient = 5;
    	
    	/**
    	 * 생성자
    	 * 
    	 * @author	Yoon HyunGook
    	 * @since	2010-03-08
    	 */
    	public Message(){
    		type = 0;
    	}
    	
    	/**
    	 * 메세지 타입 설정
    	 * 
    	 * @author	Yoon HyunGook
    	 * @since	2010-03-08
    	 * 
    	 * @param	메세지 타입
    	 */
    	protected void setType(int type){
    		this.type = type;
    	}
    	
    	/**
    	 * 메세지 타입 얻기
    	 * 
    	 * @author	Yoon HyunGook
    	 * @since	2010-03-08
    	 * 
    	 * @return	메세지 타입
    	 */
    	public int getType(){
    		return type;
    	}
    	
    	/**
    	 * 클라이언트 번호 얻기
    	 * 
    	 * @author	Yoon HyunGook
    	 * @since	2010-03-08
    	 * 
    	 * @return	클라이언트 번호
    	 */
    	public int getNumber(){
    		return number;
    	}
    	
    	/**
    	 * 클라이언트 번호 설정
    	 * 
    	 * @author	Yoon HyunGook
    	 * @since	2010-03-08
    	 * 
    	 * @param	클라이언트 번호
    	 */
    	public void setNumber(int num){
    		this.number = num;
    	}
    	
    	/**
    	 * 객체 출력
    	 * 
    	 * @author	Yoon HyunGook
    	 * @since	2010-03-08
    	 * 
    	 * @return	String
    	 */
    	public String toString(){
    		return Integer.toString(getNumber());
    	}
    }
    


    --- MSGChat.java ---
    package yhg.comm.message;
    
    /**
     * 채팅 메세지
     * 
     * @author	Yoon HyunGook
     * @since	2010-03-08
     */
    public class MSGChat extends Message{
    	private static final long serialVersionUID = 6997142338486570285L;
    	private String message;
    	
    	/**
    	 * 생성자
    	 * 
    	 * @author	Yoon HyunGook
    	 * @since	2010-03-08
    	 */
    	public MSGChat(){
    		setType(Message.type_MSGChat);
    	}
    	
    	/**
    	 * 전송 내용 설정
    	 * 
    	 * @author	Yoon HyunGook
    	 * @since	2010-03-08
    	 * 
    	 * @param	전송 내용
    	 */
    	public void setMessage(String str){
    		message = new String(str);
    	}
    	
    	/**
    	 * 전송 내용 얻기
    	 * 
    	 * @author	Yoon HyunGook
    	 * @since	2010-03-08
    	 * 
    	 * @return	전송 내용
    	 */
    	public String getMessage(){
    		return message;
    	}
    	
    	/**
    	 * 객체 출력
    	 * 
    	 * @author	Yoon HyunGook
    	 * @since	2010-03-08
    	 * 
    	 * @return	String
    	 */
    	public String toString(){
    		return getMessage();
    	}
    }
    


    메세지 타입은 새로운 메세지가 생길때 마다 수동적으로 추가 해줘야 합니다.

    type : 메세지의 종류를 구분
    number : 클라이언트의 번호 (필요시만 사용)

    댓글 0

Designed by Tistory.