목차
없음
본문내용
1. 설계노트
가장 먼저, 개발한 프로그램의 UI를 설명하자면, 크게 세부분으로 나눌 수 있다.
자신의 IP를 출력하는 IP View, 프로그램자체가 서버가 되어, 소켓을 열어놓고 대기하여 후에 소켓연결을 하고 수신된 메시지를 EditText에 출력하는 Receiver, 상대 서버로 접속을 하고, 메시지를 송신하면서 송신한 메시지를 EditText에 출력하는 Sender로 구성하였다.
이들은 각각의 다른 부분에 대해서 서로 독립적으로 실행되기 때문에, 프로그램을 실행하여 메시지를 송수신 할 때, 일정 순서에 따라 각 부분을 실행 시킬 필요 없이 필요한 부분만 실행시켜 사용할 수 있도록 설계를 하였다.
프로그램을 개발할 때에 중점으로 둔 사항은 각 Receiver와 Sender는 규칙적으로 송수신되는(e.g. 송신과 수신이 번갈아가면서 이루어지는 것)것이 아니기 때문에 독립적으로 처리되어야 한다는 것이다. Receiver는 Sender가 메시지를 송신하는 것과 상관없이 매번 자신에게 송신되는 메시지를 받아 출력하여야 한다. 그렇기 때문에 Receiver는 스레드를 사용하여 버튼클릭이벤트가 발생하면 스레드를 시작하여 메시지를 입력받는 방법의 설계를 하고, Sender는 버튼클릭이벤트가 발생하면 메시지를 전송하기 때문에 따로 반복문이나 스레드를 이용하지 않는 방법으로 설계를 하였다.
또한 중앙의 EditText에 송수신된 메시지를 출력시키기 위해 각 Receiver와 Sender의 출력부분은 runOnUIThread를 통하여 메시지를 출력시키는 방법으로 설계를 하였다.
프로그램설계는 알고리즘은 위의 그림과 같다. 앞서 말한 UI의 세 부분에 대한 이벤트는 설계한대로 각자의 이벤트에만 관여하고, 다른 부분에 대해서 관여나 요청 없이 독립적으로 이벤트가 일어난다.
먼저, IP View부분은 버튼클릭이벤트가 발생하면 자신의 IP를 출력한다.
두 번째로, Receiver부분은 버튼클릭이벤트가 발생하면 스레드를 통하여 소켓을 열고, 다른 프로그램에서 소켓연결요청을 할 때까지 대기한다. 이후, 소켓연결신청이 들어오면 소켓연결을 하고, 반복문을 통해 계속적으로 메시지를 받아 중앙에 있는 EditText에 출력시킨다. 이후 프로젝트를 고려하여 프로그램이 정상종료 혹은 비정상종료가 되었을 때에도 항상 소켓연결해제를 하여, 상대 프로그램에서도 인지를 할 수 있도록 설계하였다.
가장 먼저, 개발한 프로그램의 UI를 설명하자면, 크게 세부분으로 나눌 수 있다.
자신의 IP를 출력하는 IP View, 프로그램자체가 서버가 되어, 소켓을 열어놓고 대기하여 후에 소켓연결을 하고 수신된 메시지를 EditText에 출력하는 Receiver, 상대 서버로 접속을 하고, 메시지를 송신하면서 송신한 메시지를 EditText에 출력하는 Sender로 구성하였다.
이들은 각각의 다른 부분에 대해서 서로 독립적으로 실행되기 때문에, 프로그램을 실행하여 메시지를 송수신 할 때, 일정 순서에 따라 각 부분을 실행 시킬 필요 없이 필요한 부분만 실행시켜 사용할 수 있도록 설계를 하였다.
프로그램을 개발할 때에 중점으로 둔 사항은 각 Receiver와 Sender는 규칙적으로 송수신되는(e.g. 송신과 수신이 번갈아가면서 이루어지는 것)것이 아니기 때문에 독립적으로 처리되어야 한다는 것이다. Receiver는 Sender가 메시지를 송신하는 것과 상관없이 매번 자신에게 송신되는 메시지를 받아 출력하여야 한다. 그렇기 때문에 Receiver는 스레드를 사용하여 버튼클릭이벤트가 발생하면 스레드를 시작하여 메시지를 입력받는 방법의 설계를 하고, Sender는 버튼클릭이벤트가 발생하면 메시지를 전송하기 때문에 따로 반복문이나 스레드를 이용하지 않는 방법으로 설계를 하였다.
또한 중앙의 EditText에 송수신된 메시지를 출력시키기 위해 각 Receiver와 Sender의 출력부분은 runOnUIThread를 통하여 메시지를 출력시키는 방법으로 설계를 하였다.
프로그램설계는 알고리즘은 위의 그림과 같다. 앞서 말한 UI의 세 부분에 대한 이벤트는 설계한대로 각자의 이벤트에만 관여하고, 다른 부분에 대해서 관여나 요청 없이 독립적으로 이벤트가 일어난다.
먼저, IP View부분은 버튼클릭이벤트가 발생하면 자신의 IP를 출력한다.
두 번째로, Receiver부분은 버튼클릭이벤트가 발생하면 스레드를 통하여 소켓을 열고, 다른 프로그램에서 소켓연결요청을 할 때까지 대기한다. 이후, 소켓연결신청이 들어오면 소켓연결을 하고, 반복문을 통해 계속적으로 메시지를 받아 중앙에 있는 EditText에 출력시킨다. 이후 프로젝트를 고려하여 프로그램이 정상종료 혹은 비정상종료가 되었을 때에도 항상 소켓연결해제를 하여, 상대 프로그램에서도 인지를 할 수 있도록 설계하였다.
추천자료
- [안드로이드]Google의 개방형 플랫폼 Android(안드로이드)란 무엇인가? - 안드로이드와 안드...
- [안드로이드]범용OS 안드로이드의 개념과 특징 및 의미, 안드로이드폰이 휴대폰 시장에 미치...
- 안드로이드폰 완벽정리 (장점, 소개, 성능, 경쟁)
- 안드로이드폰 완벽정리 (장점, 소개, 성능, 경쟁) - 삼성 갤럭시A, 구글 넥서스원, HTC 디자...
- 안드로이드_태블릿4-1
- 안드로이드 앱위젯플래시라이트 어플 소스
- 안드로이드 자동차 블랙박스 어플리케이션
- 안드로이드 (Android)
- [Android/JAVA] 자바기반서버 & 안드로이드 클라이언트 채팅프로그램
소개글