StreamSocketListener 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
支持使用 TCP 流套接字或蓝牙 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 端口号或服务名称。 对于蓝牙 RFCOMM,本地服务名称参数是蓝牙服务 ID。
- 收到连接后,使用 StreamSocketListenerConnectionReceivedEventArgs 对象检索已创建 StreamSocket 对象的 Socket 属性。
- 使用 StreamSocket 对象发送和接收数据。
- 调用 Close 方法可停止侦听和接受传入网络连接,并释放与 StreamSocketListener 对象关联的所有非托管资源。 接收连接时创建的任何 StreamSocket 对象均不受影响,可以根据需要继续使用。
SocketProtectionLevel 枚举允许服务器在使用 StreamSocketListener 对象通过蓝牙侦听和绑定到套接字时控制与客户端的协议协商。 当通过蓝牙使用 StreamSocketListener 对象时,支持的 SocketProtectionLevel 值为 PlainSocket、 BluetoothEncryptionAllowNullAuthentication 或 BluetoothEncryptionWithAuthentication。 当 StreamSocketListener 对象用于侦听和绑定到不使用蓝牙的套接字时,唯一受支持的 SocketProtectionLevel 值为 PlainSocket。
若要将 StreamSocketListener 与蓝牙配合使用,必须在应用清单中设置 bluetooth.rfcomm 设备功能。 有关详细信息,请参阅 如何为蓝牙指定设备功能。
处理异常
在 StreamSocketListener 类上调用异步方法时,必须编写代码来处理异常。 异常可能是参数验证错误、名称解析失败和网络错误导致的。 网络错误 (连接丢失、连接故障和服务器故障(例如,随时可能发生) )的异常。 这些错误将引发异常。 如果应用未处理,则异常可能会导致整个应用被运行时终止。
Windows.Networking.Sockets 命名空间具有简化使用套接字时处理错误的功能。 SocketError 类上的 GetStatus 方法可以将 HRESULT 从异常转换为 SocketErrorStatus 枚举值。 这有助于在应用中分别处理特定网络异常。 应用还可以使用参数验证错误的异常中的 HRESULT 来了解有关导致异常的错误的更多详细信息。
有关可能的异常以及如何处理异常的详细信息,请参阅 处理网络应用中的异常。
将 StreamSocketListener 与蓝牙配合使用
你的应用可以使用 StreamSocketListener 侦听通过蓝牙 RFCOMM 的网络连接。 通过蓝牙建立的网络连接使用蓝牙服务 ID 作为连接的终结点,而不是 IP 端口或服务名称。 为了侦听蓝牙,你的应用会在 StreamSocketListener 上调用 BindServiceNameAsync 方法之一,并将 localServiceName 参数设置为蓝牙服务 ID。
若要将 StreamSocketListener 和 StreamSocket 与蓝牙配合使用,必须在应用清单中设置 bluetooth.rfcomm 设备功能。 有关详细信息,请参阅 Windows.Devices.Bluetooth.Rfcomm 命名空间、如何为蓝牙指定设备功能和蓝牙 Rfcomm 聊天示例。
在 Windows Server 2012 上使用 StreamSocketListener
在 Windows Server 2012 和 Windows Server 2012 R2 上,除非启用了 Media Foundation 功能,否则在 Windows.Networking.Sockets 命名空间中实现大部分类的 Windows.Networking.dll 将无法加载。 因此,如果禁用 Media Foundation 功能,则使用 Windows.Networking.Sockets 命名空间中的 StreamSocketListener 和相关套接字类的应用将失败。 Windows Server 2012或Windows Server 2012 R2 安装时禁用了媒体基础功能。
可以使用 服务器管理器 或在命令提示符或脚本中输入以下文本,在 Windows Server 2012 或 Windows Server 2012 R2 上启用 Media Foundation 功能:
dism /online /enable-feature /featurename:ServerMediaFoundation
启用 Media Foundation 功能后,系统会提示用户重启。 重启计算机后, Windows.Networking.Sockets 命名空间中的套接字和 WebSocket 类将按预期工作。
构造函数
StreamSocketListener() |
创建新的 StreamSocketListener 对象。 |
属性
Control |
获取 StreamSocketListener 对象上的套接字控制数据。 |
Information |
获取 StreamSocketListener 对象的套接字信息。 |
方法
事件
ConnectionReceived |
一个事件,指示在 StreamSocketListener 对象上收到了连接。 |
适用于
另请参阅
- IClosable
- SocketError
- SocketErrorStatus
- StreamSocket
- StreamSocketListenerConnectionReceivedEventArgs
- StreamSocketListenerControl
- StreamSocketListenerInformation
- 使用套接字进行连接
- 处理网络应用中的异常
- 如何使用流套接字进行连接
- 如何使用流套接字进行连接
- 如何为蓝牙指定设备功能
- 如何使用高级套接字控件
- 排查和调试网络连接问题
- 蓝牙 Rfcomm 聊天示例
- ControlChannelTrigger StreamSocket 示例
- 邻近感应示例
- StreamSocket 示例