My-library.info
Все категории

Герберт Шилдт - C# 4.0: полное руководство

На электронном книжном портале my-library.info можно читать бесплатно книги онлайн без регистрации, в том числе Герберт Шилдт - C# 4.0: полное руководство. Жанр: Программирование издательство -, год 2004. В онлайн доступе вы получите полную версию книги с кратким содержанием для ознакомления, сможете читать аннотацию к книге (предисловие), увидеть рецензии тех, кто произведение уже прочитал и их экспертное мнение о прочитанном.
Кроме того, в библиотеке онлайн my-library.info вы найдете много новинок, которые заслуживают вашего внимания.

Название:
C# 4.0: полное руководство
Издательство:
-
ISBN:
-
Год:
-
Дата добавления:
17 сентябрь 2019
Количество просмотров:
494
Читать онлайн
Герберт Шилдт - C# 4.0: полное руководство

Герберт Шилдт - C# 4.0: полное руководство краткое содержание

Герберт Шилдт - C# 4.0: полное руководство - описание и краткое содержание, автор Герберт Шилдт, читайте бесплатно онлайн на сайте электронной библиотеки My-Library.Info
В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

C# 4.0: полное руководство читать онлайн бесплатно

C# 4.0: полное руководство - читать книгу онлайн бесплатно, автор Герберт Шилдт

    int ch;

    try {

      // Сначала создать объект запроса типа WebRequest по указанному URI.

      HttpWebRequest req = (HttpWebRequest)

              WebRequest.Create("http://www.McGraw-Hill.com");

      // Затем отправить сформированный запрос и получить на него ответ.

      HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

      // Получить из ответа поток ввода.

      Stream istrm = resp.GetResponseStream();

      /* А теперь прочитать и отобразить гипертекстовое содержимое, полученное по указанному URI. Это содержимое выводился на экран отдельными порциями по 400 символов. После каждой такой порции следует нажать клавишу <ENTER>, чтобы вывести на экран следующую порцию, состоящую из 400 символов. */

      for (int i = 1; ; i++) {

        ch = istrm.ReadByte(); if (ch == -1) break;

        Console.Write((char)ch); if ((i % 400) == 0) {

          Console.Write("nНажмите клавишу <Enter>.");

          Console.ReadLine();

        }

      }

      // Закрыть ответный поток. При этом закрывается // также поток ввода istrm.

      resp.Close();

    }

    catch (WebException exc) {

      Console.WriteLine("Сетевая ошибка: " + exc.Message +

             "Код состояния: " + exc.Status);

    }

    catch (ProtocolViolationException exc) {

      Console.WriteLine("Протокольная ошибка: " + exc.Message);

    }

    catch (UriFormatException exc) {

      Console.WriteLine("Ошибка формата URI: " + exc.Message);

    }

    catch (NotSupportedException exc) {

      Console.WriteLine("Неизвестный протокол: " + exc.Message);

    }

    catch (IOException exc) {

      Console.WriteLine("Ошибка ввода-вывода: " + exc.Message);

    }

    catch (System.Security.SecurityException exc) {

      Console.WriteLine("Исключение в связи с нарушением безопасности: " + exc.Message);

    }

    catch (InvalidOperationException exc) {

      Console.WriteLine("Недопустимая операция: " + exc.Message);

    }

  }

}


Теперь перехватываются все исключения, которые могут быть сгенерированы сетевыми методами. Так, если изменить вызов метода Create() следующим образом:


WebRequest.Create("http://www.McGraw-Hill.com/moonrocket");


а затем перекомпилировать и еще раз выполнить программу, то в результате может быть выдано приведенное ниже сообщение об ошибке.


Сетевая ошибка: Удаленный сервер возвратил ошибку: (404) Не найден.

Код состояния: ProtocolError


На веб-сайте по адресу www.McGraw-Hill. com отсутствует раздел moonrocket, и поэтому он не найден по указанному URI, что и подтверждает приведенный выше результат.

Ради краткости и ясности в программах большинства примеров из этой главы отсутствует полноценная обработка исключений. Но в реальных приложениях она просто необходима.


Класс Uri

Как следует из табл. 26.1, метод WebRequest.Create() существует в двух вариантах. В одном варианте он принимает идентификатор URI в виде строки. Именно этот вариант и был использован в предыдущих примерах программ. А во втором варианте этот метод принимает идентификатор URI в виде экземпляра объекта класса Uri, определенного в пространстве имен System. Класс Uri инкапсулирует идентификатор URL. Используя класс Uri, можно сформировать URI, чтобы затем передать этот идентификатор методу Create(). Кроме того, идентификатор URI можно разделить на части. Для выполнения многих простых операций в Интернете класс Uri малопригоден. Тем не менее он может оказаться весьма полезным в более сложных ситуациях сетевого подключения к Интернету.

В классе Uri определяется несколько конструкторов. Ниже приведены наиболее часто используемые конструкторы этого класса.


public Uri(string uriString)

public Uri(Uri baseUri, string relativeUri)


В первой форме конструктора объект класса Uri создается по идентификатору URI, заданному в виде строки uriString. А во второй форме конструктора он создается по относительному URI, заданному в виде строки relativeUri относительно абсолютного URI, обозначаемого в виде объекта baseUri типа Uri. Абсолютный URI определяет полный адрес URI, а относительный URI — только путь к искомому ресурсу.

В классе Uri определяются многие поля, свойства и методы, оказывающие помощь в управлении идентификаторами URI или в получении доступа к различным частям URI. Особый интерес представляют приведенные ниже свойства.


Свойство - Описание


public string Host { get; } - Получает имя сервера

public string LocalPath { get; } - Получает локальный путь к файлу

public string PathAndQuery { get; } - Получает абсолютный путь и строку запроса

public int Port { get; } - Получает номер порта для указанного протокола. Так, для протокола HTTP номер порта равен 80

public string Query { get; } - Получает строку запроса

public string Scheme { get; } - Получает протокол


Перечисленные выше свойства полезны для разделения URI на составные части. Применение этих свойств демонстрируется в приведенном ниже примере программы.


// Пример применения свойств из класса Uri.

using System;

using System.Net;

class UriDemo {

  static void Main() {

    Uri sample = new Uri("http://HerbSchildt.com/somefile.txt?SomeQuery");

    Console.WriteLine("Хост: " + sample.Host);

    Console.WriteLine("Порт: " + sample.Port);

    Console.WriteLine("Протокол: " + sample.Scheme);

    Console.WriteLine("Локальный путь: 11 + sample. LocalPath") ;

    Console.WriteLine("Запрос: " + sample.Query);

    Console.WriteLine("Путь и запрос: " + sample.PathAndQuery);

  }

}


Эта программа дает следующий результат.


Хост: herbschildt.com

Порт: 80

Протокол: http

Локальный путь: 11 + sample. LocalPath

Запрос: ?SomeQuery

Путь и запрос: /somefile.txt?SomeQuery


Доступ к дополнительной информации, получаемой в ответ по протоколу HTTP

С помощью сетевых средств, имеющихся в классе HttpWebResponse, можно получить доступ к другой информации, помимо содержимого указываемого ресурса. К этой информации, в частности, относится время последней модификации ресурса, а также имя сервера. Она оказывается доступной с помощью различных свойств, связанных с получаемым ответом. Все эти свойства, включая и те что, определены в классе WebResponse, сведены в табл. 26.5. В приведенных далее примерах программ демонстрируется применение этих свойств на практике.


Таблица 26.5. Свойства, определенные в классе HttpWebResponse

Свойство - Описание


public string CharacterSet { get; } - Получает название используемого набора символов

public string ContentEncoding { get; } - Получает название схемы кодирования

public long ContentLength { get; } - Получает длину принимаемого содержимого. Если она недоступна, свойство имеет значение -1

public string ContentType { get; } - Получает описание содержимого

public CookieCollection Cookies { get; set; } - Получает или устанавливает список cookie-наборов, присоединяемых к ответу

public WebHeaderCollection Headers! get; } - Получает коллекцию заголовков, присоединяемых к ответу

public bool IsFromCache { get; } - Принимает логическое значение true, если запрос получен из кеша. А если запрос доставлен по сети, то принимает логическое значение false

public bool IsMutuallyAuthenticated { get; } - Принимает логическое значение true, если клиент и сервер опознают друг друга, а иначе — принимает логическое значение false

public DateTime LastModified { get; } - Получает время последней модификации ресурса

public string Method { get; } - Получает строку, которая задает способ ответа

public Version ProtocolVersion { get; } - Получает объект типа Version, описывающий версию протокола HTTP, используемую в транзакции


Герберт Шилдт читать все книги автора по порядку

Герберт Шилдт - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки My-Library.Info.


C# 4.0: полное руководство отзывы

Отзывы читателей о книге C# 4.0: полное руководство, автор: Герберт Шилдт. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.