- •Гугл-дока для екзамену Архітектура компютера. Програмне забезпечення
- •1. Поняття платформи. Структура та основні складові .Net Framework.
- •2. Функції та структура clr.
- •3. Поняття збірки. Метадані. Схема виконання .Net-додатку в clr.
- •4. Система типів даних мови c#. Типи-значення.
- •5. Система типів даних мови c#. Типи-посилання.
- •6. Масиви в c#: одновимірні, багатовимірні, ступеневі. Методи та властивості класу Array.
- •7. Методи в c#: модифікатори доступу, передача параметрів, перевантаження, наслідування.
- •7. Методи в c#: модифікатори доступу, передача параметрів, перевантаження, наслідування.(Второй вариант)
- •8. Багатопоточне програмування засобами .Net. Структура процесу ос Windows. Клас Thread.
- •9. Характеристика засобів синхронізації потоків та процесів .Net Framework.
- •10. Об’єкти синхронізації потоків .Net Monitor та ReaderWriterLock.
- •11. Об’єкти синхронізації потоків .Net lock та ManualResetEvent.
- •12. Об’єкти синхронізації потоків .Net AutoResetEvent та Mutex.
- •13. Обробка виключних ситуацій в мові c#, основні класи та методи .Net щодо обробки виключень.
- •14. Віртуальні функції та абстрактні класи в мові c#.
- •15. Статичні конструктори, поля та методи класів в мові c#.
- •17. Інтерфейси в мові c#. Порівняння з абстрактними класами. Сфера застосування інтерфейсів.
- •18. Огляд колекцій в .Net. Основні інтерфейси, що лежать в основі доступу до колекцій.
- •19. Колекція ArrayList. Методи та властивості. Переваги та недоліки використання.
- •20. Колекції Stack та Queue. Методи та властивості.
- •21. Колекція BitArray. Методи та властивості. Переваги та недоліки використання.
- •22. Колекція HashTable. Методи та властивості. Переваги та недоліки використання.
- •23. Характеристика generic-колекцій .Net
- •24. Колекція LinkedList. Методи та властивості.
- •26. Групи класів доступу до даних технології ado.Net.
- •27. Характеристика від’єднаних класів технології ado.Net.
- •28. Характеристика під’єднаних класів технології ado.Net.
- •29. Завантаження бінарних об’єктів у базу даних та вивантаження їх із неї.
- •30. Транзакції в базах даних. Інтерфейс транзакцій технології ado.Net.
- •31. Особливості мережевих протоколів tcp та udp. Поняття порту, адреси, сокету.
- •32. Характеристика сокетів зі з’єднанням. Інтерфейс класу Socket для даного типу сокетів.
- •33. Характеристика сокетів без з’єднання. Інтерфейс класу Socket для даного типу сокетів.
- •34. Характеристика асинхронних та синхронних сокетів. Інтерфейс класу Socket для даного типу сокетів.
- •35. Узагальнений алгоритм взаємодії клієнта та сервера при синхронному сокетному способі обміну даними зі з’єднанням. Інтерфейс класу tcpListener.
- •36. Узагальнений алгоритм взаємодії клієнта та сервера при синхронному сокетному способі обміну даними без з’єднання. Інтерфейс класу tcpClient..
- •37. Загальна схема та реалізація багатопоточного сокетного сервера зі з’єднанням.
- •38. Поняття сервіс-орієнтованого архітектури. Web-сервіси: переваги та недоліки, стандарти в основі Web-сервісів.
- •Стандарти, що використовуються веб-службами
- •Переваги веб-служб
- •Недоліки веб-служб
- •39. Компоненти архітектури Web-сервісів. Протоколи для Web-сервісів. Приклад реалізації серверної частини Web-сервісу.
- •Используемые стандарты
37. Загальна схема та реалізація багатопоточного сокетного сервера зі з’єднанням.
Сокеты определяют конечные точки взаимодействия (обычно через сеть). Они поддерживают целый ряд протоколов, самыми популярными из которых сегодня являются User Datagram Protocol (UDP) и Transmission Control Protocol (TCP).
UDP-сокеты не требуют установления логических соединений и обычно применяются для широковещательной и многоадресной (multicast) связи. В UDP нет средств надежной доставки сообщений и контроля правильного порядка пакетов, поэтому за обнаружение потери пакетов, устранение таких проблем и упорядочение пакетов отвечает приложение-получатель.
TCP-сокеты ориентированы на логические соединения, предоставляя надежный коммуникационный путь двумя конечными точками. Важное преимущество TCP в том, что он гарантирует доставку сообщений и правильный порядок пакетов. В этой статье основное внимание уделяется TCP-сокетам.
TCP-сокеты могут быть либо клиентскими, либо серверными. Серверный сокет ожидает запросы на установление соединений, а клиентский — инициирует соединение. Как только соединение между сокетами установлено, клиент и сервер могут передавать и принимать данные или закрыть это соединение.
Чтобы настроить серверный TCP-сокет в управляемом коде, прежде всего нужно создать экземпляр класса Socket. Его конструктор принимает три параметра: AddressFamily, SocketType и ProtocolType. Параметр AddressFamily определяет используемую сокетом схему адресации. Чаще всего в качестве этого параметра используются значения InterNetwork (для адресов IPv4) и InterNetworkV6 (для адресов IPv6). Параметр SocketType определяет тип коммуникационной связи, осуществляемой при помощи сокета; к двум наиболее распространенным типам относятся Stream (для сокетов, ориентированных на логические соединения) и Dgram (если сокет не требует логических соединений). Параметр ProtocolType определяет применяемый сокетом протокол и принимает такие значения, как Tcp, Udp, Idp, Ggp и т. д.
Как только сокет создан, его можно привязать к адресу. Привязка клиентского сокета к адресу не обязательна, но в случае серверных сокетов она необходима.
Объект IPEndPoint является логическим представлением конечной точки при сетевой коммуникации и включает данные об IP-адресе и порте. Конструктор IPEndPoint принимает IP-адрес и номер порта. Номер порта - это просто целочисленный тип, определяющий используемый порт, а IP-адрес может быть представлен .NET-классом IPAddress или длинным целым числом (при этом каждый из сегментов IP-адреса представляется одним байтом целочисленного типа). Класс IPAddress содержит несколько предопределенных IP-адресов, для доступа к которым служат статические свойства; двумя самыми полезными адресами при работе с TCP-сокетами являются IPAddress.Loopback и IPAddress.Any.
Свойство IPAddress.Loopback представляет адрес обратной связи, т. е. локальный адрес компьютера (127.0.0.1). Этот адрес не имеет никакого отношения ни к оборудованию, ни к сетевой связи — он позволяет выполнять локальное тестирование даже в отсутствие сети и сетевого оборудования. Именно он используется, когда вы указываете в качестве имени хоста «localhost», хотя это можно изменить, отредактировав файл hosts в каталоге %windir%\system32\drivers\etc.
Свойство IPAddress.Any (0.0.0.0) указывает серверу задействовать для прослушивания клиентских запросов все сетевые интерфейсы, а не только интерфейс, сопоставленный с конкретным IP-адресом (в этом отношении UDP- и TCP-сокеты немного различаются). Почему бы не использовать это свойство всегда? Ну, во-первых, тогда вы не сможете контролировать, кто подключается к вашему серверу. Если у сервера несколько сетевых адаптеров, вы можете прослушивать соединения на одном интерфейсе (например, подключенном к корпоративной сети) и блокировать другой интерфейс (скажем, подключенный к интернету), задав сетевой адрес, на котором нужно вести прослушивание.
Вторая причина связана с безопасностью. Если сокет настроен на повторное использование адреса (т. е. сокет можно привязать к уже задействованному адресу) и кто-то подключается к порту, с которым работает ваше серверное приложение, то подсистема управления сокетами решает, какой сокет должен получить пакет, поступивший в этот порт.
Пространство имен System.Net.NetworkInformation включает классы, позволяющие получить подробную информацию о каждом сетевом интерфейсе системы.
В табл. 1 обобщены этапы создания серверного и клиентского сокетов. Как видите, основы работы с сокетами на самом деле просты — гораздо сложнее использовать сокеты эффективно.
Табл.1.Стандартные вызовы клиентских и серверных сокетов
Сервер |
Клиент |
Socket.Socket |
Socket.Socket |
Socket.Bind |
Socket.Bind (необязательный вызов) |
Socket.Listen |
Socket.Connect |
Socket.Accept |
|
Socket.Read/Socket.Write |
Socket.Read/Socket.Write |
Socket.Shutdown (необязательный вызов) |
Socket.Shutdown (необязательный вызов) |
Socket.Close |
Socket.Close |