2013.07.05 11:28


그럼 MFC를 이용한 채팅 프로그래밍 시작하기(서버편) - 1에 이어서 계속 진행 하도록 하겠습니다.

앞서 말씀드린대로 남은 작업은 데이터 송수신을 위한 가상함수 재정의 부분과 대화상자 클래스에서 서버 소켓을 초기화 하고 데이터를 전송하는 부분입니다.

그럼 먼저 데이터 송수신을 위한 가상함수를 재정의 하도록 하겠습니다.
먼저 서버 소켓에 재정의 해야 하는 OnAccept() 함수를 보도록 하겠습니다.
서버 소켓은 클라이언트의 요청을 기다리는 대기 상태입니다. 이 때 클라이언트는 서버 IP주소와 포트번호로 서버에 접속 요청을 위해 Connect()함수를 호출합니다. OnAccept() 함수는 사용자의 이벤트에 의해서 호출되지 않고 클라이언트 소켓의 Connect() 함수를 통해서 호출됩니다. 따라서 이 메소드는 서버 소켓에서 재정의 되어야 하고 재정의된 함수 내부에는 연결을 받아들여 이를 자소켓에 연결해 두어야 합니다.

다음은 자소켓에 재정의 해야 하는 OnReceive() 함수 입니다.
클라이언트가 데이터를 송신하기 위해 Send() 함수를 호출하게 되면 자소켓의 OnReceive() 함수가 호출됩니다. 따라서 데이터를 수신하기 위한 ReceiveData()함수를 호출하도록 함수를 재정의 해야 합니다.

마지막으로 자소켓에 재정의 해야 하는 OnClose() 함수 입니다.
클라이언트 소켓이 닫히게 되면 OnClose() 함수가 호출됩니다. 따라서 클라이언트와 연결된 자소켓을 닫고 메모리를 해제 하도록 CloseChild()함수를 호출하도록 재정의 해야 합니다.

이제 마지막 작업만을 남겨두고 있습니다.


대화상자 클래스에서 서버 소켓을 초기화 하고 데이터를 전송하는 작업입니다.

CChatServerDlg 클래스의 OnInitDialog() 함수에서 서버 소켓을 초기화 하는 InitServer() 함수를 호출하여 서버 소켓이 클라이언트의 연결 요청을 대기하도록 합니다.

다음으로 Send 버튼을 누를 때 호출되는 메시지 핸들러를 추가한 후 클라이언트로 데이터를 송신하는 SendData() 함수를 호출 하도록 합니다.

이것으로 채팅 서버 프로그램을 완성하였습니다.
이제 클라이언트 프로그램을 만들어 확인하는 일만 남았습니다.

그럼 다음시간에 클라이언트 프로그램을 만들어 간단한 채팅 테스트를 진행하도록 하겠습니다.

감사합니다.


신고


Posted by injunech

티스토리 툴바