Windows.Networking.Sockets Пространство имен

Предоставляет сокеты и классы WebSockets для сетевых коммуникаций и классов для уведомлений сети в режиме реального времени, полученных в фоновом режиме для упакованных приложений Windows (включая приложения UWP и Windows App SDK (WinUI 3).

Классы

Имя. Описание
ControlChannelTrigger

Позволяет получать уведомления в режиме реального времени для объектов, которые устанавливают TCP-подключение и хотят получать уведомления о входящего трафика.

Вызовите **BackgroundExecutionManager.RequestAccessAsync** перед использованием ControlChannelTrigger.

DatagramSocket

Поддерживает сетевое взаимодействие с помощью сокета диаграммы данных UDP.

Пример кода см. в разделе "Сокеты".

DatagramSocketControl

Предоставляет данные управления сокетом для объекта DatagramSocket .

DatagramSocketInformation

Предоставляет сведения о сокете объекта DatagramSocket .

DatagramSocketMessageReceivedEventArgs

Предоставляет данные для события MessageReceived в DatagramSocket.

MessageWebSocket

Поддерживает сетевое взаимодействие, которое позволяет читать и записывать целые сообщения с помощью WebSocket.

MessageWebSocketControl

Предоставляет данные управления сокетом в MessageWebSocket.

MessageWebSocketInformation

Предоставляет сведения о сокете в MessageWebSocket.

MessageWebSocketMessageReceivedEventArgs

Предоставляет данные для полученного события в MessageWebSocket.

ServerMessageWebSocket

Поддерживает сетевое взаимодействие, позволяющее читать и записывать целые сообщения с помощью объекта WebSocket, принадлежащих веб-серверу. Вы не можете зарегистрировать для произвольного подключения WebSocket; Вместо этого экземпляр ServerMessageWebSocket создается системным кодом, таким как портал устройств Windows (WDP).

ServerMessageWebSocketControl

Предоставляет данные управления сокетом на сервере ServerMessageWebSocket.

ServerMessageWebSocketInformation

Предоставляет сведения о сокете в ServerMessageWebSocket.

ServerStreamWebSocket

Поддерживает сетевое взаимодействие, позволяющее читать и записывать потоки с помощью объекта WebSocket, принадлежащих веб-серверу. Вы не можете зарегистрировать для произвольного подключения WebSocket; Вместо этого экземпляр ServerStreamWebSocket создается системным кодом, таким как Windows портал устройств (WDP).

ServerStreamWebSocketInformation

Предоставляет сведения о сокете объекта ServerStreamWebSocket .

SocketActivityContext

Контекст, связанный с сокетом при передаче владения сокетом между приложением и службой брокера сокетов.

SocketActivityInformation

Предоставляет сведения о переданном сокете из брокера сокетов.

SocketActivityTriggerDetails

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

SocketError

Предоставляет состояние ошибки сокета для операций с datagramSocket, StreamSocket или StreamSocketListener.

StreamSocket

Поддерживает сетевое взаимодействие с помощью сокета потока через TCP или Bluetooth RFCOMM в приложениях UWP.

StreamSocketControl

Предоставляет данные управления сокетом в объекте StreamSocket .

StreamSocketInformation

Предоставляет сведения о сокете объекта StreamSocket .

StreamSocketListener

Поддерживает прослушивание входящего сетевого подключения с помощью сокета потока TCP или Bluetooth RFCOMM.

StreamSocketListenerConnectionReceivedEventArgs

Предоставляет данные для события ConnectionReceived в объекте StreamSocketListener .

StreamSocketListenerControl

Предоставляет данные управления сокетом в объекте StreamSocketListener .

StreamSocketListenerInformation

Предоставляет сведения о сокете объекта StreamSocketListener .

StreamWebSocket

Поддерживает сетевое взаимодействие, позволяющее читать и записывать потоки с помощью WebSocket.

StreamWebSocketControl

Предоставляет данные управления сокетом для объекта StreamWebSocket .

StreamWebSocketInformation

Предоставляет сведения о сокете объекта StreamWebSocket .

WebSocketClosedEventArgs

Предоставляет данные для закрытого события в объекте MessageWebSocket, StreamWebSocket или IWebSocket .

WebSocketError

Предоставляет состояние ошибки сокета в объекте MessageWebSocket или StreamWebSocket .

WebSocketKeepAlive

Предоставляет возможность отправки протокола WebSocket в подключенном WebSocket.

WebSocketServerCustomValidationRequestedEventArgs

Предоставляет данные для события ServerCustomValidationRequested в WebSocket. Это событие возникает при создании нового безопасного подключения к WebSocket и дает коду возможность выполнять настраиваемую проверку сертификатов сервера до установки подключения.

Структуры

Имя. Описание
BandwidthStatistics

Представляет сведения о пропускной способности для передачи сетевых данных с помощью объекта StreamSocket, StreamWebSocket или MessageWebSocket.

RoundTripTimeStatistics

Представляет сведения о времени кругового пути для объекта StreamSocket .

Интерфейсы

Имя. Описание
IControlChannelTriggerEventDetails

Объект, созданный инфраструктурой фонового брокера, который используется для различения триггеров канала управления.

IControlChannelTriggerResetEventDetails

Объект, созданный инфраструктурой фонового брокера для события ControlChannelReset , указывающий, что элемент ControlChannelTrigger был сброшен.

IWebSocket

Предоставляет доступ к сетевому обмену данными, который позволяет читать и писать с помощью WebSocket.

IWebSocketControl

Предоставляет данные управления сокетом для объекта IWebSocket .

IWebSocketControl2

Предоставляет данные управления сокетом для объекта IWebSocket . Этот интерфейс расширяет интерфейс IWebSocketControl с дополнительным свойством.

IWebSocketInformation

Предоставляет сведения о сокете для объекта IWebSocket .

IWebSocketInformation2

Предоставляет сведения о сокете для объекта IWebSocket . Этот интерфейс расширяет IWebSocketInformation с дополнительными свойствами.

Перечисления

Имя. Описание
ControlChannelTriggerResetReason

Причина сброса controlChannelTrigger .

ControlChannelTriggerResourceType

Тип ресурса, используемый триггером канала управления.

ControlChannelTriggerStatus

Указывает, удалось ли системе завершить настройку объекта ControlChannelTrigger для использования элементами класса в Windows. Сети.Sockets и связанные пространства имен.

MessageWebSocketReceiveMode

Описывает тип сообщения, которое клиент примет.

SocketActivityConnectedStandbyAction

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

SocketActivityKind

Описывает тип объекта сокета, который передается в брокер сокетов или из нее.

SocketActivityTriggerReason

Причина возникновения SocketActivityTrigger .

SocketErrorStatus

Задает значения состояния для операции сокета.

SocketMessageType

Указывает тип сообщения для объекта MessageWebSocket .

SocketProtectionLevel

Указывает уровень шифрования, используемый в объекте StreamSocket .

SocketQualityOfService

Указывает качество обслуживания для объекта DatagramSocket или StreamSocket .

SocketSslErrorSeverity

Категория ошибки, возникающей при SSL-подключении.

Комментарии

Примечание.

Совместимость платформы приложений: Windows. API-интерфейсы Networking.Sockets доступны для классических приложений Windows App SDK (WinUI 3) и классических приложений Win32, а не только приложений UWP. Упакованные классические приложения используют те же объявления сетевых возможностей, что и приложения UWP. Неупакованные классические приложения имеют неограниченный сетевой доступ и не нужно объявлять возможности. Инструкции см. в разделе "Вызовы среда выполнения Windows API" в классических приложениях.

Windows. Пространство имен Networking.Sockets предоставляет классы и интерфейсы для сетевых устройств, использующих сокеты и WebSockets. Ниже приведены основные классы.

  • DatagramSocket. Сокет диаграммы данных UDP, используемый для сетевого взаимодействия.
  • StreamSocket. Сокет потока, используемый для входящего или исходящего сетевого взаимодействия через TCP или через подключения Bluetooth, использующие RFCOMM.
  • StreamSocketListener. Прослушиватель сокета потока для прослушивания входящих сетевых подключений TCP или входящих подключений Bluetooth, использующих RFCOMM.
  • MessageWebSocket. WebSocket на основе сообщений для чтения и записи целых сообщений для сетевого взаимодействия. См. статью WebSockets.
  • StreamWebSocket. Потоковый webSocket для чтения и записи потоков для сетевого взаимодействия. См. статью WebSockets.

Эти первичные классы также имеют ряд связанных сведений и классов управления в Windows. Пространство имен Networking.Sockets.

Обработка исключений

Необходимо написать код для обработки исключений при вызове асинхронных методов в Windows. Пространство имен Networking.Sockets. Исключения могут возникать из ошибок проверки параметров, сбоев разрешения имен и сетевых ошибок. Исключения из сетевых ошибок (потеря подключения, сбоев подключений и сбоев сервера) могут произойти в любое время. Эти ошибки приводят к возникновению исключений. Если приложение не обрабатывается, исключение может привести к прекращению всего приложения средой выполнения.

Windows. Пространство имен Networking.Sockets имеет удобные вспомогательные методы и перечисления для обработки ошибок при использовании сокетов и WebSockets. Это может быть полезно, чтобы по-разному обрабатывать определённые сетевые исключения в вашем приложении. Приложение также может использовать HRESULT из исключения при ошибках проверки параметров, чтобы узнать более подробные сведения об ошибке, вызвавшей исключение.

Дополнительные сведения о возможных исключениях и способах обработки исключений см. в разделе "Обработка исключений" в сетевых приложениях.

Использование StreamSocket с близкой связью, Wi-Fi Direct и Bluetooth

Приложение может использовать StreamSocket для сетевых подключений между устройствами, которые находятся в близком диапазоне. Классы в Windows. Пространство имен Networking.Proximity поддерживает сетевые подключения с StreamSocket на близлежащих устройствах, использующих Bluetooth или Wi-Fi Direct. Одноранговые и связанные классы в Windows. Пространство имен Networking.Proximity позволяет приложению обнаруживать другой экземпляр приложения на соседнем устройстве. Метод PeerFinder.FindAllPeersAsync ищет одноранговые компьютеры, работающие в одном и том же приложении в беспроводном диапазоне. Метод PeerFinder.ConnectAsync возвращает подключенный StreamSocket , который приложение может использовать для передачи сетевых данных с помощью ближайшего однорангового приложения. Дополнительные сведения см. в статье "Поддержка близкого взаимодействия и касания"Windows. Networking.Proximity, PeerFinder и пример близкого взаимодействия.

Приложение также может использовать StreamSocket для сетевых подключений между устройствами, которые используют Wi-Fi Direct с классами в Windows. Пространство имен Devices.WiFiDirect. Класс WiFiDirectDevice можно использовать для поиска других устройств с поддержкой Wi-Fi direct (WFD). Метод WiFiDirectDevice.GetDeviceSelector получает идентификатор устройства для ближайшего устройства WFD. Получив ссылку на ближайшее устройство WFD, можно вызвать метод WiFiDirectDevice.GetConnectionEndpointPairs , чтобы получить объект EndpointPair . Метод ConnectAsync(EndpointPair) или ConnectAsync(EndpointPair, SocketProtectionLevel) в классе StreamSocket можно использовать для установления соединения сокета. Дополнительные сведения см. в Windows. Devices.WiFiDirect и WiFiDirectDevice.

Bluetooth использует идентификаторы службы Bluetooth в качестве конечных точек для подключений StreamSocket , а не имен узлов или IP-адресов. Чтобы использовать StreamSocket с Bluetooth, в манифесте приложения необходимо задать возможность устройства bluetooth.rfcomm . Дополнительные сведения см. в Windows. Пространство имен Device.Bluetooth.Rfcomm, указание возможностей устройств для Bluetooth и примера Чата Bluetooth Rfcomm.

Использование DatagramSocket с Wi-Fi Direct

Приложение может использовать DatagramSocket для передачи сетевых данных между устройствами, использующими Wi-Fi Direct с помощью классов в Windows. Пространство имен Devices.WiFiDirect. Класс WiFiDirectDevice можно использовать для поиска других устройств с поддержкой Wi-Fi direct (WFD). Метод WiFiDirectDevice.GetDeviceSelector получает идентификатор устройства для ближайшего устройства WFD. Получив ссылку на ближайшее устройство WFD, можно вызвать метод WiFiDirectDevice.GetConnectionEndpointPairs , чтобы получить объект EndpointPair . Методы класса DatagramSocket можно использовать для отправки и получения данных в объект EndpointPair . Дополнительные сведения см. в Windows. Devices.WiFiDirect и WiFiDirectDevice.

Использование сетевых триггеров

Windows. Пространство имен Networking.Sockets предлагает два типа триггеров, которые приложение может использовать для фоновой сети: ControlChannelTrigger и SocketActivityTrigger.

Триггеры канала управления

ControlChannelTrigger позволяет приложению получать пакеты сетевых данных и сетевые хранимые данные, когда приложение находится в фоновом режиме. Это позволяет приложению предоставлять состояние и сетевые уведомления в режиме реального времени для StreamSocket в Windows. Пространство имен Networking.Sockets и другие сетевые классы в связанных пространствах имен.

Сетевые триггеры используются длительными сетевыми приложениями (например, почтовым приложением) для минимизации использования сетевых ресурсов и системных ресурсов. Триггеры сети позволяют приложению удаляться в режим низкой мощности в течение определенного времени, сохраняя сетевые подключения нетронутыми, но в состоянии низкой мощности. Вы можете задать интервал хранения, чтобы сообщить системе, когда приложение должно проснуться. При получении пакета для приложения можно также задать триггер. Эти функции уведомлений помогают продлить срок работы батареи при использовании длительных сетевых приложений на мобильных устройствах.

Дополнительные сведения см. в классе ControlChannelTrigger и настройке параметров фонового подключения.

Триггеры действия сокета

SocketActivityTrigger позволяет приложению получать сетевые пакеты данных, если он не активен (даже если он приостановлен или завершен), и даже если он не загружен в память. Он предоставляется особенно для приложений, предоставляющих сетевые службы, где приложение будет регистрироваться в качестве поставщика услуг через DNS-SD, а затем становится неактивным. SocketActivityTrigger уведомляет приложение о подключении клиента к службе, чтобы служба могла активировать и предоставить запрошенные службы. SocketActivityTrigger также может использоваться в других обстоятельствах. Используйте его всякий раз, когда вы хотите активировать приложение в ответ на полученный сетевой трафик.

Если приложение использует триггеры действия сокета, необходимо указать возможность pushNotifications в манифесте приложения.

Выбор сетевого триггера

Существуют некоторые сценарии, в которых любой тип триггера подходит. При выборе типа триггера, используемого в приложении, рассмотрите следующие советы.

  • Если вы используете IXMLHTTPRequest2, System.Net.HttpClient или System.Net.Http.HttpClientHandler, необходимо использовать ControlChannelTrigger.
  • Если вы используете StreamSockets с поддержкой push-уведомлений, предпочитайте SocketActivityTrigger. Она позволяет системе освободить память и уменьшить требования к мощности, если подключение не используется.
  • Если вы хотите свести к минимуму объем памяти приложения, если оно не активно обслуживает сетевые запросы, предпочтете SocketActivityTrigger.
  • Если вы хотите, чтобы приложение могло получать данные во время работы системы в режиме ожидания подключения, используйте SocketActivityTrigger.

Использование сокетов и WebSockets в Windows Server 2012

На Windows Server 2012 и Windows Server 2012 R2 Windows.Networking.dll, реализующей большинство классов в Windows. Пространство имен Networking.Sockets не будет загружаться, если функция Media Foundation не включена. В результате приложения, использующие сокеты или классы WebSockets в Windows. Пространство имен Networking.Sockets завершится ошибкой, если функция Media Foundation отключена. Windows Server 2012 или Windows Server 2012 R2 устанавливается с отключенной функцией Media Foundation.

Компонент Media Foundation можно включить в Windows Server 2012 или Windows Server 2012 R2 с помощью диспетчер сервера или ввода следующего текста в командной строке или скрипте:

dism /online /enable-feature /featurename:ServerMediaFoundation После включения функции Media Foundation пользователю будет предложено перезапустить. После перезапуска компьютера классы сокетов и WebSockets в Windows. Пространство имен Networking.Sockets будет работать должным образом.

Использование сокетов и WebSockets с сетевой изоляцией

Сетевая изоляция в Windows позволяет полностью контролировать профиль безопасности упаковаемого приложения (включая UWP и упакованные Windows App SDK (WinUI 3) классических приложений).

Сетевая изоляция позволяет определить сетевой доступ, необходимый для каждого приложения, выбрав соответствующие возможности. Приложению без соответствующего набора возможностей запрещено использовать определенные типы сети (Интернет или домашняя или рабочая сеть) и определенные сетевые запросы (исходящие запросы, инициированные клиентом, или запросы, инициируемые клиентом, или запросы, инициируемые клиентом, и исходящие запросы). Возможность принудительной сетевой изоляции гарантирует, что даже если приложение скомпрометировано, приложение может использовать только функции (сетевые типы и сетевые запросы, например), которые приложение было предоставлено в качестве возможностей. Это значительно снижает возможное влияние на другие приложения и операционную систему.

Windows активно применяет сетевую изоляцию. Вызов метода или любой доступ к свойству в Windows. Сетевое пространство имен .Sockets (или связанные пространства имен, для которых требуется доступ к сети), может завершиться ошибкой, если соответствующая сетевая возможность не включена.

Сетевые возможности для приложения настраиваются в манифесте приложения при создании приложения. Сетевые возможности обычно добавляются с помощью Visual Studio при разработке приложения. Они также могут быть заданы вручную в файле манифеста приложения с помощью текстового редактора. Распакованные классические приложения не подвергаются сетевой изоляции и не должны объявлять сетевые возможности.

Дополнительные сведения о сетевой изоляции см. в разделе "Настройка возможностей сетевой изоляции".

См. также