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


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
Наследование
Object Platform::Object IInspectable StreamSocketListener
Атрибуты
Реализации

Требования к 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 .

Применяется к

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