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 при разработке приложения. Они также могут быть заданы вручную в файле манифеста приложения с помощью текстового редактора. Распакованные классические приложения не подвергаются сетевой изоляции и не должны объявлять сетевые возможности.
Дополнительные сведения о сетевой изоляции см. в разделе "Настройка возможностей сетевой изоляции".
См. также
- PeerFinder
- WiFiDirectDevice
- Windows.Devices.Bluetooth.Rfcomm
- Windows.Devices.WiFiDirect
- Windows.Networking
- Windows.Networking.Connectivity
- Windows.Networking.Proximity
- Добавление поддержки сети
- Подключение с сокетами
- WebSockets
- Обработка исключений в сетевых приложениях
- Настройка возможностей сетевой изоляции
- Настройка параметров фонового подключения
- Как указать возможности устройства для Bluetooth
- Поддержка близкого взаимодействия и касания
- Устранение неполадок и отладка сетевых подключений
- SetSocketMediaStreamingMode
- Пример чата Bluetooth Rfcomm
- Пример DatagramSocket
- Пример ControlChannelTrigger StreamWebSocket
- Пример сокета TCP ControlChannelTrigger
- Пример близкого взаимодействия
- Пример StreamSocket
- Пример DatagramSocket
- Пример WebSocket
- Пример StreamSocket
- примерWi-Fi Direct
- Wi-Fi пример служб Direct (Windows 10)
- Пример сокета триггера активации потока сокета