Программирование >>  Программирование с использованием ajax 

1 ... 330 331 332 [ 333 ] 334 335 336 ... 396


Таблица 32.1. Примеры значений свойств объе1Сга Uri

Свойство объекта Uri Результат

Scheme http

Host www.wrox.com

Port 80

LocalPath /marketbasket.cgi

Query ?isbn=0470124725

Протоколы TCP и UDP

Теперь, когда вы знаете, как получить IP-адрес из имени хоста, можно приступить к рассмотрению функционирования протоколов TCP и UDP. Оба эти протокола являются протоколами транспортного уровня, как было показано на рис. 32.3. Оба они используют номер порта для идентификации приложения, которое будет принимать данные. Протокол TCP ориентирован на соединение, в то время как UDP не зависит от соединения.

Протокол TCP требует создания серверным приложением сокета с известным номером порта, чтобы клиентское приложение могло подключиться к серверу. Клиент создает сокет с общедоступным номером порта. Когда клиент подключается к серверу, он передает серверу свой номер порта, чтобы серверу был известен путь к клиенту. После того как соединение установлено, клиент получает возможность отправлять данные, принимаемые сервером, после чего сервер может отправлять данные, принимаемые клиентом. Естественно, отправка и прием данных могут происходить и в обратном порядке. При использовании протокола QOTD (quote of the day - цитата дня) (сервер QOTD - часть службы Simple TCP/IP Services (Простая служба TCP/IP) компонента Windows) сервер просто отправляет определенные данные после подключения клиента, а затем закрывает соединение.

Протокол UDP подобен TCP в том, что сервер должен создать сокет с известным номером порта, а клиент использует общедоступный номер порта. Различие между ними в том, что клиент не инициирует соединение. Вместо этого клиент может от правлять данные, не устанавливая вначале подключение. При отсутствии соединения пет никакой гарантии, что данные вообще принимаются, но передача в целом происходит быстрее. Большое преимущество протокола UDP состоит в том, что с его помощью можно осуществлять широковещательные рассылки - рассылку информации всем системам в локальной сети (LAN) посредством широковещательного адреса.

Широковещательные адреса - это IP-adpeca, в которых все разряды хостчасти IP-adpeca

установлены в 1.

Прикладные протоколы

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

При использовании протокола HTTP для запроса данных с Web-сервера вначале открывается ТСР-соединение, после чего отравляется HTTP-запрос. Пример НТТР-заироса, инициированного браузером, выглядит подобно показанному ниже:



GET /default.aspx HTTP/1.1

Accept: image/gif, image/x-xbitmap, image/jpeg, image/p]peg, application/x-ms-application, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-xbap, application/x-shockwave-flash, V*

Accept-Language: de-AT, en-US;q=0.7 Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; .NET CLR 2.0.50727; Media Center PC 5.0; Tablet PC 2.0; .NET CLR 1.1.4322; .NET CLR 3.5.20706; .NET CLR 3.0.590) Host: localhost:80 Connection: Keep-Alive

Этот пример запроса содержит команду GET. Некоторые из наиболее часто используемых команд HTTP - GET, POST и HEAD. Команда GET служит для запроса файла с сервера. Команда POST также запрашивает файл с сервера, но, в отличие от команды GET, при ее использовании вслед за заголовком HTTP отправляются дополнительные данные. При использовании команды HEAD сервер возвращает только информацию заголовка файла, чтобы клиент мог определить, отличается ли данный файл от данных, уже хранящихся в кэше.

Команда GET запрашивает файл с сервера. В приведенном примере сервер должен возвратить файл /def ault. aspx. Последняя часть первой строки определяет версию протокола HTTP Если и клиент, и сервер поддерживают версию 1.1, именно эта версия используется для обмена данными. В противном случае применяется версия HTTP 1.0. Версия HTTP 1.1 позволяет сохранять то же соединение (см. информацию HTTP-заголовка Connection: Keep-Alive).

За первой строкой запроса с помощью команды GET следует информация HTTP-заголовка. Вместе с запросом браузер отправляет информацию о себе. В приведенном примере присутствует информация Accept, в которой отправляются МШЕ-типы поддерживаемых программ. Заголовок Accept-Language определяет языки, сконфигурированные в браузере. Сервер может использовать эту информацию для возвращения клиенту различной информации в зависимости от поддерживаемых файлов и языков. С помощью заголовка User-Agent браузер отправляет информацию о клиентском приложении, использованном для запроса страницы с сервера. В данном случае применяется браузер Internet Explorer 7.0 в сочетании с операционной системой Windows Vista. Идентификатор этой операционной системы - Windows NT 6.0. Сервер может также выяснить, установлена ли в клиентской системе исполняющая среда .NET. В данном случае поддерживаемыми версиями .NET являются .NET 1.1, .NET 2.0, .NET 3.0 и .NET 3.5.

После того, как сервер принимает GET-запрос, он возвращает ответное сообщение. Пример ответного сообщения показан ниже. В случае успешного запроса первая строка ответа содержит состояние ОК и используемую версию протокола HTTP. За ними следует информацию заголовка HTTP, которая включает в себя элементы Server, Date и Content-Type. За заголовком следует информация о длине содержимого. Заголовок и содержимое разделены двумя пустыми строками.

НТТР/1.1 200 ОК

Server: Microsoft-IIS/7 . О

Date: Sun, 29 Jul 2007 20:14:59 GMT

X-Powered-By: ASP.NET

X-AspNet-Version: 2.0.50727

Cache-Control: private

Content-Type: text/html; charset=utf-8

Content-Length: 991



<!DOCTYPE HTML PUBLIC - W3C DTD HTML 4.0 Transitional EN > <HTML> <HEAD>

<title>Demo</title>

НТТР-запрос легко имитировать с помощью утилиты telnet, что и будет сделано в следующем практическом занятии.

Практическое занятие ИмИТаЦИЯ НТТР-ЗЭПрОСа

1. Запустите клиента Telnet, введя telnet. ехе в командной строке. Отобразится приглашение Microsoft Telnet>. В среде Windows Vista клиент Telnet по умолчанию не устанавливается. Если в данной системе он отсутствует, выберите пункт меню Control Panel=>Programs=>Turn Windows Features On or Off (Панель управления=> Программы=i>Включение или отключение компонентов Windows), а затем установите флажок Telnet Client (Клиент Telnet), чтобы инсталлировать его.

2. Чтобы видеть команды, вводимые и отправляемые серверу, в сеансе Telnet введите команду set localecho.

3. Создайте соединение с Web-сервером в локальной сети. Если Web-сервер присутствует в локальной сети, введите команду open localhost 80. Значение 80 - это номер порта, по умолчанию используемый Web-сервером.

4. Отправьте запрос Web4:epBepy, введя команду GET / НТТР/1.1, а затем два раза нажав клавишу <Enter>. Аргумент / вызывает возврат сервером страницы, заданной по умолчанию - например, default. htm. Вместо / можно запросить конкретные имена файлов. Отправка двух символов новой строки обозначает конец передачи. После этого вы получите ответ сервера, подобный показанному ранее.

Варианты программирования сетевой передачи

Пространства имен System.Net и System.Net. Sockets предлагают несколько вариантов для программирования сетевой передачи. Они показаны на рис. 32.5. Простейший способ программирования сетевой передачи предусматривает применение класса WebClient. Для получения файлов с Web-сервера или для передачи файлов на FTP-сервер требуется единственный метод этого класса. Однако функциональные возможности этого класса ограничены. Версия .NET 3.5 позволяет его использовать только с протоколами HTTP и FTP и для доступа к файлам. Конечно, можно подключать пользовательские классы для поддержки других протоколов.

Сам класс WebClient использует классы WebRequest и WebResponse. Эти классы предоставляют больше функциональных возможностей, но более сложны в применении.

Если требуется создать сервер, для этого нельзя использовать классы WebClient или WebRequest. Для этой цели нужно применять класс TcpListener из пространства имен System.Net. Sockets. Класс TcpListener можно использовать для создания сервера для протокола TCP, а TcpClient предназначен для создания клиентских приложений. Эти классы не ограничены только протоколами HTTP и TCP - можно пользоваться любым протоколом на основе TCP.

При необходимости применения протокола UDP для создания UDP-серверов и клиентов используют классы UdpListener и UdpClient (которые подобны классам TcpListener и TcpClient).



1 ... 330 331 332 [ 333 ] 334 335 336 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика