рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Серверный поток

Серверный поток - Лабораторная Работа, раздел Образование, Тема: Взаимодействие процессов через механизм гнезд Теперь Взглянем На Функцию Serverthreadproc: &n...

Теперь взглянем на функцию ServerThreadProc:

 

UINT ServerThreadProc(LPVOID pParam)

{CSockAddr saClient;

CHttpBlockingSocket sConnect;

char request[100];

 

char headers[] = "HTTP/1.0 200 OKrn"

"Server: Inside Visual C++ EX34Arn"

"Date: %srn"

"Content-Type: text/htmlrn"

"Accept-Ranges: bytesrn"

"Content-Length: 500rn";

"rn"; //очень важная пустая строка

char html[] =

"rn"

"<html>rn"

"<head><title>Inside Visual C++ Server</title></head>rn"

"<body><body background="usa1.jpg">rn"

"<h1><center>This is a custom home page</center></h1><p>rn"

"<a href="default.htm"> SlowSoft’s Home Page</a><p>rn"

"</body></html>rnrn";

 

 

try {

if(!g_sListen.Accept(sConnect, saClient)) {

// обработчик в классе «вид» закрыл ожидающий сокет

return 0;

}

 

AfxBeginThread(ServerThreadProc, pParam);

// прочитать запрос от клиента

sConnect.ReadHttpHeaderLine(request, 100, 10);

TRACE("SERVER: %s", request); //напечатать первый заголовок

 

if(!strncmp(request, "GET", 3)){

do // обработать остальные заголовки запроса

{

sConnect.ReadHttpHeaderLine(request, 100, 10);

TRACE("SERVER: %s", request);

} while(strcmp(request,"rn"));

//*/

sConnect.Write(headers, strlen(headers), 10); // заголовки ответа

sConnect.Write(html, strlen(html), 10); // код HTML

 

}

else {

TRACE("SERVER: not a GETn");

// не знаю, что делать

}

}

catch(CBlockingSocketException* e) {

// Делаем что-то с исключением

e->Delete();

}

// g_sListen.Close();

sConnect.Close();}

Наиболее важным является вызов Accept. Поток кода блокируется до тех пор, пока клиент не подсоединится к порту 80 сервера, после чего Accept вернет новый сокет sConnect. Текущий поток сразу же запускает другой поток.

Между тем текущий поток должен обработать запрос клиента, который пришел на sConnect. Сначала считываются все заголовки запроса путем вызова ReadHttpHeaderLine до тех пор, пока не обнаружится пустая строка. Затем вызывается Write для отправки заголовков и HTML-операторов ответов. Наконец текущий поток вызывает Close для закрытия соединения через сокет. Конец жизни данного соединения. Следующий поток остается блокированным на вызове Accept, ожидая следующего соединения.

 

– Конец работы –

Эта тема принадлежит разделу:

Тема: Взаимодействие процессов через механизм гнезд

Лабораторная работа... Тема Взаимодействие процессов через механизм гнезд... Цель Научиться передавать данные и сообщения между процессами компьютеров глобальной сети...

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

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Протокол IP.
IP определяет пакеты, называемые датаграммы (datagrams), являющиеся базовыми единицами интернет-взаимодействия. Эти пакеты, обычно длинной менее 1000 байт, передаются по всему миру при открытии Web

Протокол UDP.
UDP – это всего лишь небольшая надстройка над IP, поскольку прложения никогда не используют IP напрямую. Подобно IP, UDP не сообщаетотправителю о доставке датаграммы. UDP хорош для простых однократ

Протокол ТСР.
ТСР выполняет безошибочную передачу больших блоков донных, являющийся главным протоколом интернета. На рис.4 показан формат сегмента ТСР (он не называется датаграмма). ТСР располагается внутри IP-д

Основы HTTP.
HTTP – протокол более высокого уровня, он является протоколом для WWW и относительно прост. HTTP построен на основе ТСР. Он работает следующим образом: сервер ожидает (listens) запросы на

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

Очистка
Чтобы избежать при завершении «утечек» памяти, программа должна убедиться, что завершены все рабочие потоки. Простейший способ выполнить это – закрыть ожидающий сокет. Это приведет к тому, что все

Упрощенный клиент НТТР
Теперь вариант со стороны клиента – простая программа, которая выполняет слепой (blind) запрос GET. Когда сервер принимает запрос GET с косой чертой, показанный ниже, он возвращает HTML-файл по умо

Blocksock.h
  // needs winsock.h in the precompiled headers typedef const struct sockaddr* LPCSOCKADDR; class CBlockingSocketException : public CException { DE

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги