Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Упрощенный сервер НТТР



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





Дата публикования: 2014-11-29; Прочитано: 168 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...