Запуск сервера

Сервер запускается в ответ на некоторое действие пользователя, например, выбор из меню. Вот обработчик команды:

 

CBlockingSocket g_sListen; // один глобальный сокет для ожидания запросов

Void CSocketView::OnInternetStartServer(){

try{

CSockAddr saServer(INADDR_ANY, 80);

g_sListen.Create();

g_sListen.Bind(saServer);

g_sListen.Listen();

AfxBeginThread(ServerThreadProc, GetSafeHwnd());

}

catch(CBlockingSocketException* e){

g_sListen.Cleanup();

// делаем что-нибудь с исключением

e->Delete();

}

 

В обработчике создается сокет и запускается рабочий поток, который ожидает клиент, пытающийся подсоединится к порту 80. Если что-нибудь не так, генерируется исключение. Глобальный объект g_sListen имеет время жизни, совпадающее с временем жизни программы, и способен поддерживать множество параллельных соединений, каждое в отдельном потоке.