Сетевое программирование в .NET. Расшифровка IP-адреса (IP address specification). Обеспечение надежности доставки пакетов, страница 17

Peter: Hi, Alex

Alex: Glad to see you!

Peter: I wonder, can I download one of your. . .

Здесь Peter и Alex являются псевдонимами беседующих персон. При выходе из сеанса одного из клиентов сервер должен вывести сообщение: 127.0.0.1.Alex said good-bye. При обмее данными используйте сложные имена (имя или адрес сервера-точка-nick), но в консольные окна выводите только nick.

Классы .NET Framework для управления сетевыми соединениями

Классы .NET Framework значительно упрощают работу с объектами сетевого программирования. Во второй версии Framework появилось несколько новых пространств имен, которые содержат классы, реализующие большую часть функций, необходимых для разработки сетевых приложений и управления сетевыми устройствами. Пространство System.Net содержит 6 пространств: Cache, Configuration, Mail, Mime, NetworkInformation, Sockets.

Класс EndPoint, расположенный в пространстве имен System.Net (не путайте его с классом Endpoint, который существует в пространстве имен Microsoft.SqlServer.Management.Smo) является абстрактным родителем семейства классов, реализующих функциональность сетевых ресурсов или служб.

¨  IPEndPoint содержит пару (IP-адрес, номер порта) и реализует функциональность одного из концов (локального или удаленного) сетевого соединения. С помощью объекта класса IPEndPoint приложение получает доступ к какой-либо службе (network service) на host-компьютере.

¨  IrDAClient обслуживает беспроводное соединение (infrared connection). С помощью этого класса производится обнаружение, подключение и обмен данными с устройствами, использующими инфракрасное излучение.

¨  IrDAListener переводит сетевой разъем в режим прослушивания и мониторинга беспроводного соединения

¨  IrDAEndPoint представляет концевой узел беспроводного (инфракрасного) соединения.

¨  IrDADeviceInfo хранит информацию об устройствах, обменивающихся данными с помощью инфракрасного излучения.

Мы не будем подробно рассматривать технологию работы с беспроводными устройствами, но для того, чтобы уяснить роль новых классов, обозначим схему процесса обмена информацией. Логика обнаружения устройств, включения режима прослушивания и получения информации от устройства-источника выглядит таким образом.

IrDAClient client = new IrDAClient();

IrDADeviceInfo[] devices = client.DiscoverDevices(2); // Хотим работать с 2-мя устройствами

if (devices.Length == 0)

return;

IPEndPoint point = new IrDAEndPoint (devices[0].DeviceID, "MyService");

IrDAListener listener = new IrDAListener (point);

listener.Start();   // Ожидание информации

client = listener.AcceptIrDAClient();  // Когда началась передача информации

Stream stream = client.GetStream();        // Получаем информацию

В пространстве имен System.Net.NetworkInformation вы обнаружите классы, которые дают доступ к данным о сетевых адресах, сетевом трафике, позволяют вводить реакции на события в системе (например, изменение сетевых адресов локального компьютера) и производить много других действий по управлению сетью.

¨  Класс IPGlobalProperties предоставляет информацию о конфигурации сетевых интерфейсов локального компьютера и его соединениях. С помощью метода GetIPGlobalProperties можно получить данные о сетевых соединениях и статистику их трафиков.

¨  Класс Ping реализует функциональность известной утилиты с тем же именем и позволяет проверить доступность того или иного компьютера в сети.

Следующий пример отображает некоторые данные, полученные с помощью методов и свойств этих классов. Проверьте его работу в рамках консольного проекта. Для этого вы можете добавить новый проект типа Visual C# Console Application (с именем SocketApp) к существующему решению WinSock.

public static void Main()

{

IPGlobalProperties p = IPGlobalProperties.GetIPGlobalProperties();

string

header = "Global information for host computer: " +   p.HostName + '.' + p.DomainName,

line = "\n" + new string('\u2500', header.Length) + "\n";