Поделиться через


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 при разработке приложения. Их также можно задать вручную в файле манифеста приложения с помощью текстового редактора.

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

См. также раздел