CSocket 은 내부적으로 윈도를 하나 생성 하여 이벤트를 처리하는것으로 알고 있습니다. 이를 위해선 MFC 에서 사용하는 여러가지 글로벌 변수들이 초기화 되어야 하는데 이게 제대로 안되서 문제가 생기는 것 같네요.. 먼저 프로그램 시작시에 AfxWinInit() 함수를 호출한다.
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
cerr << "MFC failed to initialize!" << endl;
return 1;
}