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

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

Упрощенный клиент НТТР

Упрощенный клиент НТТР - Лабораторная Работа, раздел Образование, Тема: Взаимодействие процессов через механизм гнезд Теперь Вариант Со Стороны Клиента – Простая Программа, Которая Выполняет Слеп...

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

 

GET / HTTP/1.0

 

Если в браузере ввести http://www.slowsoft.com, он отправит слепой запрос GET.

Программа-клиент может использовать тот же самый класс CHttpBlockingSocket; она должна инициализировать Winsock так же, как это делает сервер. Обработчик команды просто запускает рабочий поток при помощи следующего вызова:

 

AfxBeginThread(ClientSocketThreadProc, GetSafeHwnd());

 

Вот код клиентского потока:

 

CString g_strServerName = “localhost”; //или другое имя хоста

UINT ClientSocketThreadProc(LPVOID pParam)

{

CHttpBlockingSocket sClient;

char* buffer = new char[MAXBUF];

int nBytesReceived = 0;

 

char request[] = "GET / HTTP/1.0rn";

char headers[] =

"User-Agent: Mozilla/1.22 (Windows; U; 32bit)rn"

"Accept: */*rn"

"Accept: image/gifrn"

"Accept: image/x-xbitmaprn"

"Accept: image/jpegrn"

"rn"; // это необходимо

CSockAddr saServer, saClient;

try {

sClient.Create();

saServer = CBlockingSocket::GetHostByName(g_strServerName, 80);

sClient.Connect(saServer);

sClient.Write(request, strlen(request), 10);

sClient.Write(headers, strlen(headers), 10);

 

do { // прочитать все заголовки ответа сервера

nBytesReceived = sClient.ReadHttpHeaderLine(buffer, 100, 10);

} while(strcmp(buffer, "rn")); // до первой пустой строки

 

nBytesReceived = sClient.ReadHttpResponse(buffer, 100, 10);

if(nBytesReceived == 0) {

AfxMessageBox("Ответ не получен. Bad URL?");

}

else {

buffer[nBytesReceived] = '';

AfxMessageBox( buffer);

}

 

}

 

catch(CBlockingSocketException* e) {

// зарегистрировать исключение

e->Delete();

}

sClient.Close();

delete [] buffer;

return 0; // поток завершен

}

 

Поток сначала вызывает CBlockingSocket::GetHostByName для получения IP-адреса сервера. Затем он создает сокет и вызывает Connect. Теперь есть двусторонний канал связи с сервером. Поток посылает запрос GET, за которым следуют несколько заголовков запроса, считывает заголовки ответа сервера и сам ответный файл, который предполагается текстовым. После вывода текста в окне сообщения поток завершается.

 

 

Индивидуальные задания:

  1. Передать из одной программы в другую текстовый файл.
  2. Передать из одной программы в другую двоичный файл.
  3. Во время набора текста в одной программе одновременно выводить текст в окне другой.
  4. При перемещении окна выводить в другой программе координаты перемещаемого окна.

 


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

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

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

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

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

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

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

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

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

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

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

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

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

Серверный поток
Теперь взглянем на функцию ServerThreadProc:   UINT ServerThreadProc(LPVOID pParam) {CSockAddr saClient; CHttpBlockingSocket sConnect;

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

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
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги