Реферат Курсовая Конспект
Упрощенный клиент НТТР - Лабораторная Работа, раздел Образование, Тема: Взаимодействие процессов через механизм гнезд Теперь Вариант Со Стороны Клиента – Простая Программа, Которая Выполняет Слеп...
|
Теперь вариант со стороны клиента – простая программа, которая выполняет слепой (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, за которым следуют несколько заголовков запроса, считывает заголовки ответа сервера и сам ответный файл, который предполагается текстовым. После вывода текста в окне сообщения поток завершается.
Индивидуальные задания:
– Конец работы –
Эта тема принадлежит разделу:
Лабораторная работа... Тема Взаимодействие процессов через механизм гнезд... Цель Научиться передавать данные и сообщения между процессами компьютеров глобальной сети...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Упрощенный клиент НТТР
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов