Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 7 Graphical User Interface

Similar presentations


Presentation on theme: "Chapter 7 Graphical User Interface"— Presentation transcript:

1 Chapter 7 Graphical User Interface
소켓 프로그래밍

2 Graphical User Interface
Introduction 비동기 소켓 윈도우 폼 Echo 서버 GUI Echo 클라이언트 GUI SMTP 클라이언트 GUI

3 Introduction 그래픽 인터페이스를 통한 상호작용 Event-driven 프로그래밍
컴포넌트를 클릭/선택하여 이벤트 발생 이벤트에 대해 수행할 작업과 관련된 코드 입력 사용자가 일으킨 이벤트에 의해 프로그램 흐름이 결정 GUI는 Visual Studio 2008 또는 Visual C# Express Edition을 이용하여 설계 가능

4 비동기 소켓 지금까지 사용된 Accept(), Read(), Write() 등의 메서드는 blocking 메서드
접속이 성립되어 클라이언트의 객체가 반환될 때까지 busy waiting을 하며 다른 모든 태스크가 수행되지 못하도록 막아놓고 대기 Read(), Write() 상대방이 데이터를 보낼 때까지 또는 상대방이 읽을 준비가 될 때까지 대기 이러한 blocking은 콘솔 응용 프로그램에서는 큰 문제가 되지 않을 수도 있겠지만, GUI기반 프로그램에서는 freezing 현상이 발생 전체 프로그램이 멈추지 않고 수행을 계속할 수 있도록 하는 방법이 필요 프로그램은 접속요청에 대한 busy waiting을 할 필요가 없으며, 실제 접속요청이 들어올 때 수행을 재개하도록 함으로써 해결

5 비동기 소켓 비동기 메서드를 가지는 클래스 비동기 메서드의 이름 앞에는 Begin 또는 End가 붙음 Socket
TcpListener TcpClient NetworkStream UdpClient 비동기 메서드의 이름 앞에는 Begin 또는 End가 붙음 Begin<Method Name> : 비동기 초기화 메서드 End<Method Name> : 비동기 종료 메서드 Example : BeginAcceptTcpClient(), EndAcceptTcpClient()

6 비동기 소켓 비동기 메서드 호출 IAsyncResult
정의된 메서드는 비동기 작업이 준비되었을 때 callback 대리자를 통해서 호출됨 즉, 비동기 메서드의 호출은 이 callback 대리자를 인자로 하여 호출을 하고, 다른 작업을 진행하다가 호출한 비동기 작업이 준비가 되면 callback 대리자에 의해 해당 작업을 처리할 메서드를 호출하는 방식을 가짐 IAsyncResult 비동기 작업의 상태를 나타내며 비동기 초기화 메서드 Begin<Method Name>의 반환 형식 또한, callback 대리자를 통해 호출되는 메서드로 전달되어 이후, 비동기 종료 메서드 End<Method Name>로 전달됨

7 비동기 소켓 핵심 코드 예제 프로그램 : AsyncEchoServer, StateHolder.cs
public static void OnClientConnect(IAsyncResult aResult) TcpListener listener = (TcpListener)aResult.AsyncState; TcpClient client = listener.EndAcceptTcpClient(aResult); ...  } public static void Main() { ... // Accept the client asynchronously  IAsyncResult aResult = lst.BeginAcceptTcpClient( new AsyncCallback(OnClientConnect), lst); // Wait for a connection before continue aResult.AsyncWaitHandle.WaitOne(); ... 예제 프로그램 : AsyncEchoServer, StateHolder.cs

8 윈도우 폼 GUI기반 프로그램을 만들기 위해서 새 프로젝트를 생성
콘솔 응용 프로그램이 아닌 Windows Form 응용 프로그램을 선택 프로젝트 생성 후 폼 디자인 화면

9 윈도우 폼 윈도우 컴포넌트의 추가 도구상자로부터 drag-and-drop 방식으로 폼에 컴포넌트 추가
도구상자에서 컴포넌트를 선택하여 폼에 그리는 방식으로 추가

10 윈도우 폼 컴포넌트 속성과 이벤트

11 윈도우 GUI 애플리케이션 메시지 구동 구조 이벤트 발생 대기 ... 시스템 메시지 큐 메시지 큐 #3 메시지 큐 #2 처리
메시지 큐 #1 메시지 큐 #2 메시지 큐 #3 ... 처리 대기

12 Echo 서버 GUI 폼 디자인 예제 코드 : ServerForm.cs

13 Echo 클라이언트 GUI 폼 디자인 코드 예제 : ClientForm.cs

14 SMTP 클라이언트 GUI 폼 디자인 코드 예제 : SMTPClientFform.cs


Download ppt "Chapter 7 Graphical User Interface"

Similar presentations


Ads by Google