Лекция: Упрощенный сервер НТТР

Код действительно работает с браузером. Сервер всего лишь возвращает несколько жестко зашитых в него заголовков и НТМL-операторов в ответ на любой запрос GET.

 

Инициализация Winsock

Перед вызовом любой Winsock-функции необходимо инициализировать Winsock-библиотеку. Два следующих оператора в функции-члене InitInstance делают это:

 

WSADATA wsd;

WSAStartup(0x0101, &wsd);

 

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

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

 

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 имеет время жизни, совпадающее с временем жизни программы, и способен поддерживать множество параллельных соединений, каждое в отдельном потоке.

 

еще рефераты
Еще работы по информатике