본문 바로가기

통신

(9)
새로운 구조로 새로운 작업 예정??? 우연히 동기의 질문에 오랫만에 다시 YHGCommunication 과 관련된 글을 확인하게 되었습니다. 잘 모르고 빨리 만들다 보니 허접한 코드가 되어 버렸습니다. 이벤트 방식의 메세지 처리, 객체 직렬화 메세지 전송 등 비 효율적인 면이 많이 있었습니다. 이 부분을 좀 더 수정해서 새로운 버전의 YHGComm 을 새로 만들까 하는 욕심이 생깁니다. 주요 수정 사항 1. 받은 메세지 처리 방식 수정 2. 전송되는 메세지 구조 수정 3. 서버에서 다양한 사용자 정보를 관리 4. 사용자 고유 번호 할당 5. Android 에서 UI thread 오류 없이 쉽게 동작 기대 효과 1. 많은 수의 메세지 클래스가 줄어듬 2. 조금 더 효율적인 전송 메세지 크기 3. 서버의 확장성 4. 타 플랫폼(Android)와..
[Java Communication] 버그수정 & GUI를 이용한 테스트용 자바 채팅 프로그램 입장, 퇴장, 입장, 퇴장 등이 반복하여 일어났을때 생기는 클라이언트 번호 오류 문제를 해결 하였습니다. 기본 제공되는 Message Class 를 최소한으로 줄였습니다. 새로운 Message Class 가 생길때 마다 기존의 Message Class에서 type을 지정하던 것을 변경하여 Message Constants Class를 하나 만들었으며 다른 프로젝트에 적용할 때에는 예제와 같이 상속을 사용함 GUI (Swing) 을 이용한 예제 서버 화면으로 3개로 구분하여 로그가 나오게 하였습니다. 알림 / 보낸 메세지 / 받은 메세지 순으로 나옵니다. 클라이언트 화면입니다. 대화명은 테스트이므로 클라이언트 번호로 나오게 하였습니다. 채팅 서버 package yhg.comm.test; import java..
[Java Communication] Message Class 수정, 동기식 클라이언트 추가 Message Class 가 좀 이상한거 같아서 바꿨음 그리고 CommClient가 비동기식으로만 동작한다는 것이 좀 문제가 될거 같아서 동기식으로 동작하는 것도 하나 만들어 보았습니다. 말만 거창한거 같네요... 아무것도 없는데 ㅋㅋㅋ Message Class가 더 필요할 때에는 기존의 클래스를 상속받아서 사용하면 됩니다. CommSynchronousClient CommSynchronousClient(String address, int port) 생성자이며 서버주소, 포트를 입력으로 받는다 boolean connect() 서버에 접속하며 결과를 boolean 으로 리턴한다 Message getResponse(Message msg) throws IOException, ClassNotFoundExcepti..
[Java Communication] 안드로이드와 데스크탑에서의 채팅 작성한 서버와 클라이언트 클래스를 이용해서 안드로이드와 데스크탑의 채팅을 만들어 보았습니다. 기존의 채팅서버와 채팅 클라이언트는 많이 변하지 않았고 안드로이드 클라이언트 추가가 주가 되었습니다. 안드로이드 실행시에는 아이피를 수정해주셔야 합니다~
[Java Communication] 버그 수정 만든지 얼마 지나지 않아... 혼자 테스트중 버그들이 발견되어 수정하였습니다. 클라이언트 번호 할당 방식 MSGConnectServer 클래스 추가
[Java Communication] Reference yhg.comm.message Message int getType() 클라이언트 종류 얻기 int getNumber() void setNumber(int num) 클라이언트 번호 설정 MSGBoolean extends Message void setTrue() void setFalse() boolean get() MSGChat extends Message void setMessage(String str) 채팅 메세지 설정 String getMessage() MSGEnterClient extends Message 서버에 클라이언트가 접속하였을 경우 이미 접속한 다른 클라이언트들에게 전송하는 메세지 MSGLeaveClient extends Message 서버에 접속되어있는 클라이언트가 접속이 끊겼을 경우 다른..
[Java Communication] Server & Client 스레드가 어려움 몇시간을 해도 통신이 잘 안됨 등등 프로젝트를 진행하면서 이런 문제점이 생길거 같아서 미리 이클래스를 작성 하였습니다. 현재로도 하나의 테스트 프로그램만을 작성해 보았으므로 다른 프로그램에서는 어떻게 동작할지는 예상할 수 없습니다 ^^;; 작성해본 간단한 채팅 프로그램의 서버와 클라이언트 입니다. 이것만 보셔도 대충 이해가 가실거라고 생각 됩니다. --- Server ---package yhg.comm.test; import java.io.IOException; import yhg.comm.message.MSGChat; import yhg.comm.message.MSGEnterClient; import yhg.comm.message.MSGLeaveClient; import yhg.comm..
[Java Communication] 메세지 클래스 팀프로젝트를 미리 준비하면서 만들어 본 통신 클래스...; 복잡했던 스레드 이런걸 단방에 해결해 주도록 만들었습니다. 1:n의 통신이 가능하게 하였으며... 중요 클래스를 건드리지 않고 이벤트를 작성하는 형식으로 만들어 보았습니다. 아직 부족한게 많고 허접할거 같지만... 일단 처음으로 통신과정 중에 왔다 갔다할 객체를 메세지라고 하여 만들었습니다. 그리고 그 메세지 클래스를 상속받아서 구체적인 메세지들이 구현이 됩니다. --- Message.Java --- package yhg.comm.message; import java.io.Serializable; /** * 통신 중에 주고 받는 메세지 * * @authorYoon HyunGook * @since2010-03-08 */ public class Me..