Windows.Networking.Sockets Пространство имен
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет сокеты и классы WebSockets для сетевого взаимодействия и классы для сетевых уведомлений в режиме реального времени, полученных в фоновом режиме для приложений UWP.
Классы
ControlChannelTrigger |
Позволяет получать уведомления в режиме реального времени в фоновом режиме для объектов, которые устанавливают TCP-подключение и хотят получать уведомления о входящем трафике. Вызовите **BackgroundExecutionManager.RequestAccessAsync** перед использованием ControlChannelTrigger. Примечание Этот класс не поддерживается в Windows Phone. |
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 |
Объект, созданный инфраструктурой фонового брокера, который используется для различения триггеров канала управления. Примечание Этот интерфейс не поддерживается в Windows Phone. |
IControlChannelTriggerResetEventDetails |
Объект, созданный инфраструктурой фонового брокера для события ControlChannelReset , чтобы указать, что ControlChannelTrigger был сброшен. Примечание Этот интерфейс не поддерживается в Windows Phone. |
IWebSocket |
Предоставляет доступ к сетевому обмену данными, который позволяет выполнять чтение и запись с помощью WebSocket. |
IWebSocketControl |
Предоставляет данные управления сокетом для объекта IWebSocket . |
IWebSocketControl2 |
Предоставляет данные управления сокетом для объекта IWebSocket . Этот интерфейс расширяет интерфейс IWebSocketControl дополнительным свойством. |
IWebSocketInformation |
Предоставляет сведения о сокете для объекта IWebSocket . |
IWebSocketInformation2 |
Предоставляет сведения о сокете для объекта IWebSocket . Этот интерфейс расширяет IWebSocketInformation дополнительными свойствами. |
Перечисления
ControlChannelTriggerResetReason |
Причина сброса ControlChannelTrigger . Примечание Это перечисление не поддерживается в Windows Phone. |
ControlChannelTriggerResourceType |
Тип ресурса, используемый триггером канала управления. Примечание Это перечисление не поддерживается в Windows Phone. |
ControlChannelTriggerStatus |
Указывает, удалось ли системе завершить настройку объекта ControlChannelTrigger для использования элементами класса в Windows.Networking.Sockets и связанных пространствах имен. Примечание Это перечисление не поддерживается в Windows Phone. |
MessageWebSocketReceiveMode |
Описывает тип сообщения, которое будет принимать клиент. |
SocketActivityConnectedStandbyAction |
Указывает, может ли приложение, использующее службу брокера сокетов, получать пакеты при переходе системы в режиме автономного подключения. |
SocketActivityKind |
Описывает тип объекта сокета, передаваемый в брокер сокетов или из брокера сокетов. |
SocketActivityTriggerReason |
Причина возникновения SocketActivityTrigger . |
SocketErrorStatus |
Задает значения состояния для операции сокета. |
SocketMessageType |
Указывает тип сообщения для объекта MessageWebSocket . |
SocketProtectionLevel |
Задает уровень шифрования, используемый в объекте StreamSocket . |
SocketQualityOfService |
Указывает качество обслуживания для объекта DatagramSocket или StreamSocket . |
SocketSslErrorSeverity |
Категория ошибок, возникающих при SSL-подключении. |
Комментарии
Пространство имен Windows.Networking.Sockets предоставляет классы и интерфейсы для сети, использующие сокеты и WebSocket. Ниже приведены основные классы.
- DatagramSocket. Сокет датаграммы UDP, используемый для сетевого взаимодействия.
- StreamSocket. Сокет потока, используемый для входящего или исходящего сетевого взаимодействия по протоколу TCP или по Bluetooth-подключениям, использующему RFCOMM.
- StreamSocketListener. Прослушиватель сокета потока для прослушивания входящих сетевых подключений TCP или входящих подключений Bluetooth, использующих RFCOMM.
- MessageWebSocket. WebSocket на основе сообщений для чтения и записи целых сообщений для сетевого взаимодействия. См. раздел WebSocket.
- StreamWebSocket. Потоковый объект WebSocket для чтения и записи потоков для сетевого взаимодействия. См. раздел WebSocket.
Эти первичные классы также имеют ряд связанных классов сведений и элементов управления в пространстве имен Windows.Networking.Sockets.
Обработка исключений
Необходимо написать код для обработки исключений при вызове асинхронных методов в пространстве имен Windows.Networking.Sockets. Исключения могут возникать из-за ошибок проверки параметров, ошибок разрешения имен и сетевых ошибок. Исключения из сетевых ошибок (например, потеря подключения, сбои подключения и сбои сервера) могут возникать в любое время. В результате таких ошибок создаются исключения. Если приложение не обрабатывается, исключение может привести к завершению всего приложения средой выполнения.
Пространство имен Windows.Networking.Sockets содержит удобные вспомогательные методы и перечисления для обработки ошибок, возникающих при использовании сокетов и WebSocket. Это удобно, чтобы по-разному обрабатывать в приложении различные сетевые исключения. Приложение также может использовать HRESULT из исключения при ошибках проверки параметров, чтобы получить более подробные сведения об ошибке, вызвавшей исключение.
Дополнительные сведения о возможных исключениях и способах обработки исключений см. в разделе Обработка исключений в сетевых приложениях.
Использование StreamSocket с близкого взаимодействия, Wi-Fi Direct и Bluetooth
Приложение может использовать StreamSocket для сетевых подключений между устройствами, которые находятся в близком диапазоне. Классы в пространстве имен Windows.Networking.Proximity поддерживают сетевые подключения с помощью StreamSocket к близлежащим устройствам, использующему Bluetooth или Wi-Fi Direct. PeerFinder и связанные классы в пространстве имен 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.Devices.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.Http.HttpClient или System.Net.Http.HttpClientHandler, вы должны использовать ControlChannelTrigger.
- Если вы используете StreamSocket с поддержкой push-уведомлений, отдавайте предпочтение SocketActivityTrigger. Это позволяет системе освободить память и снизить требования к энергопотреблению, если подключение не используется активно.
- Если вы хотите свести к минимуму объем памяти приложения, если оно не активно обслуживает сетевые запросы, отдавайте предпочтение SocketActivityTrigger.
- Если вы хотите, чтобы ваше приложение могло получать данные, когда система находится в режиме ожидания с подключением, используйте SocketActivityTrigger.
Использование сокетов и Сокетов в 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 пользователю будет предложено перезапустить его. После перезагрузки компьютера классы для сокетов и WebSocket в пространстве имен Windows.Networking.Sockets будут работать должным образом.
Использование сокетов и WebSocket с сетевой изоляцией
Сетевая изоляция в Windows 8 позволяет полностью контролировать профиль безопасности приложения UWP.
Сетевая изоляция позволяет определить сетевой доступ, необходимый для каждого приложения, выбрав соответствующие возможности. Приложению без соответствующего набора возможностей запрещается использовать определенные типы сети (Интернет или домашняя/рабочая сеть) и определенные сетевые запросы (исходящие запросы, инициированные клиентом, или как входящие незапрошенные запросы, так и исходящие запросы, инициированные клиентом). Возможность принудительной сетевой изоляции гарантирует, что даже если приложение скомпрометировано, оно может использовать только функции (например, сетевые типы и сетевые запросы), которые приложение было предоставлено в качестве возможностей. Это значительно снижает возможное влияние на другие приложения и операционную систему.
Windows 8 активно применяет сетевую изоляцию. Вызов метода или любой доступ к свойству в пространстве имен Windows.Networking.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
- Пример Потока ControlChannelTriggerWebSocket
- Пример сокета TCP ControlChannelTrigger
- Образец Proximity
- StreamSocket sample
- Образец DatagramSocket
- Пример WebSocket
- StreamSocket sample
- Пример Wi-Fi Direct
- Пример служб Wi-Fi Direct (Windows 10)
- Пример потока сокета триггера действия сокета