StreamSocketListener Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Поддерживает прослушивание входящего сетевого подключения с помощью сокета потока TCP или Bluetooth RFCOMM.
public ref class StreamSocketListener sealed : IClosable
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class StreamSocketListener final : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class StreamSocketListener final : IClosable
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class StreamSocketListener : System.IDisposable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class StreamSocketListener : System.IDisposable
function StreamSocketListener()
Public NotInheritable Class StreamSocketListener
Implements IDisposable
- Наследование
- Атрибуты
- Реализации
Требования к Windows
Семейство устройств |
Windows 10 (появилось в 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (появилось в v1.0)
|
Возможности приложения |
bluetooth.rfcomm
ID_CAP_NETWORKING [Windows Phone]
internetClientServer
privateNetworkClientServer
|
Комментарии
Класс StreamSocketListener поддерживает прослушивание входящего сетевого подключения с помощью сокета потока и принятие подключения.
Типичный порядок операций выглядит следующим образом:
- Создайте StreamSocketListener.
- Используйте свойство Control , чтобы получить объект StreamSocketListenerControl и задать качество сокета для требуемого обслуживания.
- Назначьте событие ConnectionReceived обработчику событий.
- Вызовите метод BindServiceNameAsync или BindEndpointAsync для привязки к номеру или имени службы локального TCP-порта. Для Bluetooth RFCOMM параметром имени локальной службы является идентификатор службы Bluetooth.
- При получении подключения используйте объект StreamSocketListenerConnectionReceivedEventArgs , чтобы получить свойство Socket с созданным объектом StreamSocket .
- Используйте объект StreamSocket для отправки и получения данных.
- Вызовите метод Close , чтобы прекратить прослушивание и прием входящих сетевых подключений и освободить все неуправляемые ресурсы, связанные с объектом StreamSocketListener. Все объекты StreamSocket , созданные при получении подключения, не затрагиваются и могут продолжать использоваться по мере необходимости.
Перечисление SocketProtectionLevel позволяет серверу управлять согласованием протокола с клиентами при использовании объекта StreamSocketListener для прослушивания и привязки сокетов по Bluetooth. Если объект StreamSocketListener используется по Bluetooth, поддерживаемыми значениями SocketProtectionLevel являются PlainSocket, BluetoothEncryptionAllowNullAuthentication или BluetoothEncryptionWithentication. Если объект StreamSocketListener используется для прослушивания и привязки к сокетам, не использующим Bluetooth, единственным поддерживаемым значением SocketProtectionLevel является PlainSocket.
Чтобы использовать StreamSocketListener с Bluetooth, в манифесте приложения должна быть задана возможность устройства bluetooth.rfcomm . Дополнительные сведения см. в статье Как указать возможности устройства для Bluetooth.
Обработка исключений
Необходимо написать код для обработки исключений при вызове асинхронных методов в классе StreamSocketListener. Исключения могут возникать из-за ошибок проверки параметров, ошибок разрешения имен и сетевых ошибок. Исключения из сетевых ошибок (например, потеря подключения, сбои подключения и сбои сервера) могут возникать в любое время. В результате таких ошибок создаются исключения. Если приложение не обрабатывается, исключение может привести к завершению всего приложения средой выполнения.
Пространство имен Windows.Networking.Sockets имеет функции, упрощающие обработку ошибок при использовании сокетов. Метод GetStatus класса SocketError может преобразовать HRESULT из исключения в значение перечисления SocketErrorStatus . Это удобно, чтобы по-разному обрабатывать в приложении различные сетевые исключения. Приложение также может использовать HRESULT из исключения при ошибках проверки параметров, чтобы получить более подробные сведения об ошибке, вызвавшей исключение.
Дополнительные сведения о возможных исключениях и способах обработки исключений см. в разделе Обработка исключений в сетевых приложениях.
Использование StreamSocketListener с Bluetooth
Приложение может использовать StreamSocketListener для прослушивания сетевых подключений через Bluetooth RFCOMM. Сетевые подключения по Bluetooth используют идентификатор службы Bluetooth в качестве конечной точки для подключений, а не IP-порт или имя службы. Чтобы прослушивать Bluetooth, ваше приложение вызовет один из методов BindServiceNameAsync в StreamSocketListener с параметром localServiceName , для параметра задан идентификатор службы Bluetooth.
Чтобы использовать StreamSocketListener и StreamSocket с Bluetooth, в манифесте приложения должна быть задана возможность устройства bluetooth.rfcomm . Дополнительные сведения см. в разделе Пространство имен Windows.Devices.Bluetooth.Rfcomm , Как указать возможности устройства для Bluetooth и пример Bluetooth Rfcomm Chat.
Использование StreamSocketListener в Windows Server 2012
На Windows Server 2012 и Windows Server 2012 R2 Windows.Networking.dll, реализующий большинство классов в пространстве имен Windows.Networking.Sockets, не будет загружаться, если не включена функция Media Foundation. В результате приложения, использующие StreamSocketListener и связанные классы сокетов в пространстве имен 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 будут работать должным образом.
Конструкторы
StreamSocketListener() |
Создает новый объект StreamSocketListener . |
Свойства
Control |
Возвращает данные элемента управления сокета в объекте StreamSocketListener . |
Information |
Получает сведения о сокете для объекта StreamSocketListener . |
Методы
BindEndpointAsync(HostName, String) |
Запускает операцию привязки streamSocketListener к локальному имени узла и имени локальной службы. |
BindServiceNameAsync(String) |
Запускает операцию привязки streamSocketListener к имени локальной службы. |
BindServiceNameAsync(String, SocketProtectionLevel) |
Запускает операцию привязки streamSocketListener к имени локальной службы с указанным SocketProtectionLevel , чтобы задать для всех связанных сокетов. |
BindServiceNameAsync(String, SocketProtectionLevel, NetworkAdapter) |
Запускает операцию привязки сокета в StreamSocketListener к имени локальной службы на указанном сетевом адаптере с указанным SocketProtectionLevel для установки в любых связанных сокетах. |
CancelIOAsync() |
Отменяет ожидающие операции чтения и записи в объекте StreamSocketListener . |
Close() |
Закрывает объект StreamSocketListener . |
Dispose() |
Выполняет определяемые приложением задачи, связанные с удалением, высвобождением или сбросом неуправляемых ресурсов. |
EnableTransferOwnership(Guid) |
Позволяет активировать фоновую задачу вашего приложения брокером сокетов при поступлении трафика для этого StreamSocketListener , когда приложение неактивно. |
EnableTransferOwnership(Guid, SocketActivityConnectedStandbyAction) |
Позволяет активировать фоновую задачу вашего приложения брокером сокетов, когда трафик для этого StreamSocketListener поступает, когда система находится в режиме ожидания подключения. |
TransferOwnership(String) |
Передает право владения StreamSocketListener службе брокера сокетов, которая отслеживает активность сокета и уведомляет приложение с помощью фоновой задачи, если есть какие-либо действия. |
TransferOwnership(String, SocketActivityContext) |
Передает право владения StreamSocketListener службе брокера сокетов, которая отслеживает активность сокета и уведомляет приложение с помощью фоновой задачи, если есть какие-либо действия. |
События
ConnectionReceived |
Событие, указывающее, что соединение получено в объекте StreamSocketListener . |
Применяется к
См. также раздел
- IClosable
- SocketError
- SocketErrorStatus
- StreamSocket
- StreamSocketListenerConnectionReceivedEventArgs
- StreamSocketListenerControl
- StreamSocketListenerInformation
- Подключение с помощью сокетов
- Обработка исключений в сетевых приложениях
- Подключение с помощью сокета потока
- Подключение с помощью сокета потока
- Определение возможностей устройств для Bluetooth
- Использование расширенных элементов управления сокетами
- Устранение неполадок и отладка сетевых подключений
- Пример чата Bluetooth Rfcomm
- Пример StreamSocket ControlChannelTrigger
- Образец Proximity
- StreamSocket sample