소켓을 이용한 단방향 Message 프로그램 작성
- 최초 등록일
- 2013.03.23
- 최종 저작일
- 2013.03
- 7페이지/ 압축파일
- 가격 1,000원
목차
1. 실행 결과 화면
2. 소스 코드
3. 양방향 메시지 통신을 위한 해법/설계 스케치
4. 자체 평가표
본문내용
3. 양방향 메시지 통신을 위한 해법/설계 스케치
1) 요구분석
먼저 현 프로그램에서는 양방향 통신이 불가능하다. 왜 그러한지 문제점을 파악해보았는데, 크게 두가지 이유가 있다.
① 하나의 Receiver에 단 하나의 Sender만 접속이 가능하다.
② Sender는 송신과 수신 기능을 동시에 처리할 수가 없다.
카톡처럼 양방향으로 동시 메시지 교환이 가능하기 위해서는 각각의 Sender에서 Sender의 기능뿐만 아니라 Receiver의 기능까지 도맡아서 해야 하는데, 이 경우 송신과 수신에 대한 스레딩이 되어있지 않아 프로그램이 멈추게 된다.
거기에 현재는 하나의 Receiver에 대하여 단 하나의 Sender만이 접속이 가능하므로 2명 이상에 대한 메시지 교환 기능도 불가능한 상태이다.
2) 해법 및 설계
따라서 접속의 문제와 송수신 작업의 문제, 2가지를 해결해야 한다.
첫째로 접속의 문제를 해결하기 위해서 본인이 도출한 해법은 Receiver와 Sender를 통한 1:1 통신이 아닌 Server와 Client를 구현하여 TCP방식의 설계이다.
먼저 Server는 기존의 Receiver와는 다르게 여러 개의 Client가 접속할 수 있도록 하여야 한다. 여러 개의 Client가 접근할 수 있도록 Server를 구축할 경우 각 Client들은 Server를 경유하여 통신이 가능하게 되므로 굳이 Receiver의 기능과 Sender의 기능을 모두 가질 필요가 없게 되므로 더 효율적이다.
Client에서 메시지를 보낼 경우, Server는 마치 Receiver와 같이 메시지를 수신한다. Receiver와 다른 점은 수신한 다음 이 메시지를 다른 Client들에게 송신하는 것이다. 이를 그림으로 표현하면 오른쪽과 같다.
둘째로는 송수신 작업이 동시에 이루어질 수 있도록 스레딩을 구현하는 것이다. 송신 작업과 수신 작업을 각각의 스레드가 처리하도록 하면 송신 도중 수신이 이루어지더라도 각각의 스레드가 이 작업을 진행하고 있으므로 프로그램이 멈추지 않을 것이다.
이상을 통하여, 다중 메시지 전달 프로그램을 작성할 수 있다.
참고 자료
없음
압축파일 내 파일목록
20091490_2013네트워크_과제1.hwp
msgReceiver/.classpath
msgReceiver/.project
msgReceiver/.settings/org.eclipse.jdt.core.prefs
msgReceiver/bin/MsgReceiver.class
msgReceiver/src/MsgReceiver.java
msgSender/.classpath
msgSender/.project
msgSender/.settings/org.eclipse.jdt.core.prefs
msgSender/bin/MsgSender.class
msgSender/src/MsgSender.java