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