Симон Робинсон - C# для профессионалов. Том II
- Название:C# для профессионалов. Том II
- Автор:
- Жанр:
- Издательство:Лори
- Год:2003
- Город:Москва
- ISBN:5-85582-187-0
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Симон Робинсон - C# для профессионалов. Том II краткое содержание
Платформа .NET предлагает новую среду, в которой можно разрабатывать практически любое приложение, действующее под управлением Windows, а язык C# — новый язык программирования, созданный специально для работы с .NET.
В этой книге представлены все основные концепции языка C# и платформы .NET. Полностью описывается синтаксис C#, приводятся примеры построения различных типов приложений с использованием C# — создание приложений и служб Windows, приложений и служб WWW при помощи ASP.NET, а также элементов управления Windows и WWW Рассматриваются общие библиотеки классов .NET, в частности, доступ к данным с помощью ADO.NET и доступ к службе Active Directory с применением классов DirectoryServices.
Для кого предназначена эта книгаЭта книга предназначена для опытных разработчиков, возможно, имеющих опыт программирования на VB, C++ или Java, но не использовавших ранее в своей работе язык C# и платформу .NET. Программистам, применяющим современные технологии, книга даст полное представление о том, как писать программы на C# для платформы .NET.
Основные темы книги• Все особенности языка C#
• C# и объектно-ориентированное программирование
• Приложения и службы Windows
• Создание web-страниц и web-служб с помощью ASP NET
• Сборки .NET
• Доступ к данным при помощи ADO NET
• Создание распределённых приложений с помощью NET Remoting
• Интеграция с COM, COM+ и службой Active Directory
C# для профессионалов. Том II - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Класс IPAddress
представляет адрес IP, который доступен как свойство Address
и может быть преобразован в десятичный формат с точками с помощью ToString()
. IPAddress
реализует также статический метод Parse()
, эффективно выполняя обратное преобразование в ToString()
— из десятичной строки с точками в (целочисленный) адрес IP.
IPAddress ipAddress = IPAddress.Parse("234.56.78.9");
int address = ipAddress.Address; // address будет присвоено 37105130
string ipString = ipAddress.ToString(); // ipString будет присвоен
// текст "234.45.54.2"
IPAddress
предоставляет также ряд константных статических полей, которые возвращают известные специальные адреса IP, имеющие специальные значения.
//следующая строка задает обратную петлю как "127.0.0.1"
// адрес обратной петли указывает локальный хост
string loopback = IPAddress.Loopback.ToString();
// следующая строка задает адрес широковещания как "255.255.255.255"
// адрес широковещания используется для отправки сообщения
// всем машинам в локальной сети
String broadcast = IPAddress.Broadcast.ToString();
Класс IPHostEntry
инкапсулирует информацию, связанную с определенным хостом (компьютером). Он делает доступным имя хоста с помощью свойства HostName
(которое возвращает строку) и все адреса IP с помощью свойства AddressList
, которое возвращает массив объектов IPAddress
. Класс IPHostEntry
будет показан в действии в примере DNSResolver
ниже.
Класс DNS
является классом, который может общаться с используемым по умолчанию сервером DNS, чтобы извлечь адреса IP. Двумя важными (статическими) методами здесь являются Resolve()
, использующий сервер DNS для получения данных хоста с заданным именем хоста, и GetHostByAddress()
, который также посылает назад эти данные, но в этот раз с помощью адреса. Оба метода возвращают объект IPHostEntry
.
HostEntry wroxHost = Dns.Resolve("www.microsoft.com");
HostEntry wroxHostCopy = Dns.GetHostByAddress("234.234.234.234");
В этом коде оба объекта HostEntry
будут содержать данные серверов Microsoft.com.
Класс Dns
отличается от классов IPAddress
и IPHostEntry
тем, что инкапсулирует возможность реально общаться с серверами для получения информации. Классы IPAddress
и IPHostEntry
, напротив, мало чем отличаются от структур данных, которые имеют подходящие свойства, позволяющие получить доступ к содержащимся в них данным.
Пример: DnsLookup
Связанные с DNS и IP классы будут проиллюстрированы с помощью примера, который ищет имена DNS. Этот снимок экрана показывает DnsLookup
в действии.

Пример просто предлагает пользователю ввести имя DNS в основное текстовое поле. Когда пользователь нажимает кнопку Resolve
, пример использует метод Dns.Resolve()
для извлечения ссылки IPHostEntry
и выводит имя хоста и адреса IP. Отметим, что выведенное имя хоста может в некоторых случаях отличаться от введенного имени. Это происходит, если одно имя DNS ( www.microsoft.com
) действует просто как прокси для другого имени DNS ( www.microsoft.akadns.net
).
Приложение DnsLookup
является стандартным оконным приложением C# с элементами управления, как показано на снимке экрана, и присвоенными им соответственно именами textBoxInput
, buttonResolve
, textBoxHostName
и listboxIPs
. Затем в класс Form1
добавляется следующий метод заданием его в окне свойств Visual Studio.NET в качестве обработчика событий для нажатия кнопки buttonResolve
.
void OnResolve(object sender, EventArgs e) {
try {
IPHostEntry iphost = Dns.Resolve(textBoxInput.Text);
foreach(IPAddress ip in iphost.AddressList) {
int ipaddress = ip.Address;
listBoxIPs.Items.Add(ipaddress);
listBoxIPs.Items.Add(" " + Dns.IpToString(ipaddress));
}
textBoxHostName.Text = iphost.HostName;
} catch(Exception ex) {
MessageBox.Show("Unable to process the request because " +
"the following problem occurred:\n" + ex.Message,
"Exception occurred");
}
}
Отметим, что в этом коде перехватываются все исключения — исключение может легко возникать, если пользователь вводит что-то, что не является именем DNS, или если сеть выключена.
После извлечения экземпляра IPHostEntry
используется свойство AddressList
для получения массива, содержащего адреса IP, которые затем перечисляются в цикле foreach
. Каждый адрес выводится как целое число и как строка использованием статического метода Dns.IpToString()
, который делает то же самое, что и экземпляр метода IPAddress.ToString()
.
Протоколы нижнего уровня
В этом разделе кратко упоминаются некоторые из классов .NET, используемые для коммуникации на нижнем уровне.
Коммуникация между компьютерами работает на нескольких различных уровнях. Рассмотренные до сих пор в этой главе классы действуют на самом высоком уровне, на котором определены особые команды. Наверное, проще всего понять это, рассматривая FTP, так как многие разработчики знакомы с командами FTP. Хотя в последние годы появился ряд хороших утилит FTP на основе UI, но до недавних пор основным инструментом, используемым для FTP в среде Windows, была команда DOS ftp
, которая работала в командной строке, и поэтому использование ее включало явный ввод посылаемых серверу инструкций ftp
.
HTTP, Telnet, SMTP, POP и другие протоколы основываются на похожих наборах команд. Единственное различие состоит в том, что для большинства из этих протоколов используются инструменты, которые скрывают передачу команд от пользователя, так что он обычно об этом не знает. Например, когда в браузере Web вводится URL и посылается запрос Web, браузер на самом деле посылает на сервер команду GET (обычным текстом), соответствующую по своему назначению команде FTP get
. Он может также послать команду POST, которая указывает, что к запросу присоединены другие данные.
Однако эти протоколы сами по себе не являются достаточными для обеспечения коммуникации между компьютерами. Даже если клиент и сервер понимают, например, протокол HTTP, они все равно не смогут понять друг друга, если не будет точно согласовано, как передавать символы. Какой двоичный формат будет использоваться, и, даже спускаясь на самый нижний уровень, какое напряжение будет использоваться для представления 0 и 1 в двоичных данных? Это связано с тем, что существует множество различных согласуемых протоколом элементов, которые разработчики и инженеры, работающие в этой области, часто называют стеком протоколов. Стек протоколов является, по сути, списком различных протоколов от самого верхнего уровня (HTTP, FTP и т. д.) до базовых протоколов напряжения нижнего уровня и т.д.
К счастью, для большей части разработок нет необходимости спускаться так далеко вниз по стеку. Но если требуется эффективная коммуникация, нет ничего необычного в написании кода, который работает непосредственно на уровне пересылки между компьютерами пакетов двоичных данных. Это область таких протоколов, как TCP, и Microsoft предоставляет ряд классов, которые позволяют удобно работать с двоичными данными на этом уровне. Используя эти классы, можно, например, послать широковещательное сообщение, которое будет одновременно получено рядом компьютеров в сети.
Читать дальшеИнтервал:
Закладка: