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
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 или BluetoothEncryptionWithAuthentication. Если объект 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. Пространство имен Device.Bluetooth.Rfcomm, указание возможностей устройств для Bluetooth и примера Чата Bluetooth Rfcomm.
Использование 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 пользователю будет предложено перезапустить. После перезапуска компьютера классы для сокетов и WebSockets в Windows. Пространство имен Networking.Sockets будет работать должным образом.
Конструкторы
| Имя. | Описание |
|---|---|
| StreamSocketListener() |
Создает новый объект StreamSocketListener . |
Свойства
| Имя. | Описание |
|---|---|
| Control |
Возвращает данные элемента управления сокета в объекте StreamSocketListener . |
| Information |
Возвращает сведения о сокете для объекта StreamSocketListener . |
Методы
| Имя. | Описание |
|---|---|
| BindEndpointAsync(HostName, String) |
Запускает операцию привязки streamSocketListener к локальному имени узла и имени локальной службы. |
| BindServiceNameAsync(String, SocketProtectionLevel, NetworkAdapter) |
Запускает операцию привязки сокета в StreamSocketListener к имени локальной службы на указанном сетевом адаптере с указанным SocketProtectionLevel , чтобы задать все связанные сокеты. |
| BindServiceNameAsync(String, SocketProtectionLevel) |
Запускает операцию привязки в StreamSocketListener с именем локальной службы с указанным SocketProtectionLevel , чтобы задать для любых связанных сокетов. |
| BindServiceNameAsync(String) |
Запускает операцию привязки в StreamSocketListener с именем локальной службы. |
| CancelIOAsync() |
Отменяет ожидающие операции чтения и записи по объекту StreamSocketListener . |
| Close() |
Закрывает объект StreamSocketListener . |
| Dispose() |
Выполняет определяемые приложением задачи, связанные с освобождением, освобождением или сбросом неуправляемых ресурсов. |
| EnableTransferOwnership(Guid, SocketActivityConnectedStandbyAction) |
Позволяет фоновой задаче приложения запускаться брокером сокетов при поступлении трафика для этого StreamSocketListener , пока система находится в режиме ожидания подключения. |
| EnableTransferOwnership(Guid) |
Позволяет фоновой задаче приложения запускаться брокером сокетов при поступлении трафика для этого StreamSocketListener , пока приложение неактивно. |
| TransferOwnership(String, SocketActivityContext) |
Передает владение StreamSocketListener службе брокера сокетов, которая отслеживает действие сокета и уведомляет приложение через фоновую задачу, если есть какое-либо действие. |
| TransferOwnership(String) |
Передает владение StreamSocketListener службе брокера сокетов, которая отслеживает действие сокета и уведомляет приложение через фоновую задачу, если есть какое-либо действие. |
События
| Имя. | Описание |
|---|---|
| ConnectionReceived |
Событие, указывающее, что соединение получено в объекте StreamSocketListener . |
Применяется к
См. также
- IClosable
- SocketError
- SocketErrorStatus
- StreamSocket
- StreamSocketListenerConnectionReceivedEventArgs
- StreamSocketListenerControl
- StreamSocketListenerInformation
- Подключение с сокетами
- Обработка исключений в сетевых приложениях
- Как подключиться к сокету потока
- Как подключиться к сокету потока
- Как указать возможности устройства для Bluetooth
- Использование расширенных элементов управления сокетами
- Устранение неполадок и отладка сетевых подключений
- Пример чата Bluetooth Rfcomm
- Пример ControlChannelTrigger StreamSocket
- Пример близкого взаимодействия
- Пример StreamSocket