'MFC Socket 옵션'에 해당되는 글 1건

  1. 2009.04.11 [펌] MFC 애플리케이션 위저드의 “Windows 소켓” 옵션 (1)
출처 : http://ultrasoo.linuxtop.co.kr/bbs/view.php?id=mfc&no=7
 
MFC 소켓 프로그래밍을 하기 위해서는 처음에 프로젝트를 생성할 때 MFC 응용 프로그램
마법사(MFC application wizard)에서 “Windows 소켓” 옵션을 선택해야 한다고 했다. 그런데
만약 이 옵션을 선택하지 않고 프로젝트를 생성했는데, 나중에 네트워크 프로그램을 추가해야 할
경우엔 어떻게 해야 할까?
처음에 “Windows 소켓”을 선택하지 않았다고 해서 프로젝트를 새로 만들고 코드를 복사해 넣는
수고를 할 필요는 없다. 사실 MFC 애플리케이션 위저드에서 “Windows 소켓” 옵션을 체크했을
때 추가되는 코드는 매우 간단한 것이다. 단지 하나의 함수를 호출해주는 코드를 삽입해 줄 뿐이다.
MFC 소켓을 사용하기 위해서는 AfxSocketInit이라는 함수를 먼저 호출해 주어야 한다. MFC
애플리케이션 위저드에서 “Windows 소켓” 옵션을 체크했을 때 추가되는 코드는
AfxSocketInit 함수를 호출해주는 코드를 삽입하는 것 뿐이다.
일반적으로 그 코드가 삽입되기에 가장 적절한 곳은 CWinApp 클래스를 상속받은 여러분의
클래스 파일의 InitInstance 함수 내에서이다. 만약 여러분이 생성한 프로젝트의 이름이
Test라면 CTestApp라는 클래스가 구현되어 있을 것이며, 그 클래스의 구현 파일(.cpp)에는
InitInstance 멤버 함수가 정의되어 있을 것이다. 이 함수 내에서 AfxSocketInit 함수를
호출하도록 코드를 넣어주면 된다.
아마 MFC 애플리케이션 위저드는 다음과 같은 코드를 자동으로 넣어줄 것이다.
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
IDP_SOCKETS_INIT_FAILED라는 상수는 string table에 있는 문자열인데, “Windows 소켓
을 초기화하지 못했습니다.”라는 문자열을 가리킨다. 따라서 여러분이 MFC 애플리케이션 위저드
에서 “Windows 소켓”을 선택하지 않고 직접 AfxSocketInit 함수를 호출해주려면
IDP_SOCKETS_INIT_FAILED 대신 “AfxSocketInit 호출에 실패했습니다.”와 같이 적절한
문자열을 직접 넣어주면 될 것이다.

참고로..
stdafx.h 파일에

#include <afxsock.h>  // MFC 소켓 확장

라인을 삽입해야한다~
Posted by +깡통+
이전버튼 1 이전버튼