信息
您所需的主题如下所示。但此主题未包含在此库中。
0(共 1)对本文的评价是有帮助 - 评价此主题

StreamSocket Class

支持通过 TCP 或蓝牙 RFCOMM 使用流套接字进行网络通信。

语法

Public NotInheritable Class StreamSocket
    Implements IDisposable

特性

[DualApiPartition()]
[MarshalingBehavior(Agile)]
[Threading(Both)]
[Version(0x06020000)]

成员

StreamSocket类 具有这些类型的成员:

构造函数

StreamSocket类 具有这些构造函数。

构造函数说明
StreamSocket Creates a new StreamSocket object.

 

方法

The StreamSocket 类 具有这些方法。 对于 C#、Visual Basic 和 C++,它还继承方法于Object 类.

方法说明
Close [C++, JavaScript]Closes the StreamSocket object.
ConnectAsync(EndpointPair) Starts an asynchronous operation on a StreamSocket object to connect to a remote network destination specified as an EndpointPair object.
ConnectAsync(EndpointPair, SocketProtectionLevel) Starts an asynchronous operation on a StreamSocket object to connect to a remote network destination specified as an EndpointPair object and a SocketProtectionLevel enumeration. This method is not callable from JavaScript.
ConnectAsync(HostName, String) Starts an asynchronous operation on a StreamSocket object to connect to a remote network destination specified by a remote hostname and a remote service name.
ConnectAsync(HostName, String, SocketProtectionLevel) Starts an asynchronous operation on a StreamSocket object to connect to a remote destination specified by a remote hostname, a remote service name, and a SocketProtectionLevel.
ConnectAsync(HostName, String, SocketProtectionLevel, NetworkAdapter) Starts an asynchronous operation on a StreamSocket object on a specified local network adapter to connect to a remote destination specified by a remote hostname, a remote service name, and a SocketProtectionLevel.
Dispose [C#, VB]Performs tasks associated with freeing, releasing, or resetting unmanaged resources.
UpgradeToSslAsync Starts an asynchronous operation to upgrade a connected socket to use SSL on a StreamSocket object.

 

属性

StreamSocket类 具有这些属性。

属性访问类型说明

Control

只读Gets socket control data on a StreamSocket object.

Information

只读Gets socket information on a StreamSocket object.

InputStream

只读Gets the input stream to read from the remote destination on a StreamSocket object.

OutputStream

只读Gets the output stream to write to the remote host on a StreamSocket object.

 

备注

StreamSocket 类支持使用流套接字的网络通讯通过 TCP 或蓝牙 RFCOMM。

对于客户端应用程序,最常见的使用 StreamSocket 的操作序列如下:

  • 创建 StreamSocket
  • 获取 StreamSocketControl 对象(通过使用 Control 属性),针对 StreamSocketControl 对象设置任何属性,然后调用任意一种 ConnectAsync 方法。
  • 调用 ConnectAsync 方法之一以与远程端点建立连接。如果需要立即执行 SSL/TLS 连接,则可以使用某些 ConnectAsync 方法来指定。如果在发送和接收一些初始数据后需要 SSL/TSL 连接,则可以在以后调用 UpgradeToSslAsync 方法以将连接升级到使用 SSL。
  • 获取 OutputStream 属性,以便将数据写入远程主机。
  • 获取 InputStream 属性,以便读取远程主机上的数据。
  • 根据需要读取和写入数据。
  • 调用 Close 方法,以便中止任何挂起的操作,释放与 StreamSocket 对象关联的所有非托管资源。

注意  Close 由使用 JavaScript 编写的 Windows Store 应用程序使用。对于以 C# 和 VB.NET 中的 .NET Framework 4.5 编写的应用程序,Close 方法作为 StreamSocket 上的 Dispose() 方法公开。对于以 C++ 编写的应用程序,使用对象上的删除关键字时将调用 Close 方法。

StreamSocket 对象也会与 StreamSocketListener 对象一同使用,通过服务器应用程序或对等应用程序中的 TCP 或蓝牙 RFCOMM 来监听传入的连接。 StreamSocket 对象是由 Socket 属性(在 ConnectionReceived 事件上)返回的,返回时机是当 StreamSocketListener 对象接收 TCP 或 Bluetooth RFCOMM 连接请求。有关更多信息,请参见 StreamSocketListener

处理异常

当你在 StreamSocket 类上调用异步方法时,必须编写代码以处理异常。 异常可能来自参数验证错误、名称解析错误和网络错误。因网络错误(例如,断开连接、连接失败和服务器故障)导致的异常随时都可能发生。 这些错误将导致引发异常。未经您的应用程序处理的异常可能导致整个应用程序被运行时终止。

Windows.Networking.Sockets 命名空间有一个方便的帮助器方法和枚举,用于在使用套接字时处理错误。这可用于应用程序中的特定网络异常的不同处理方式。针对参数验证错误,应用程序还使用异常中的 HRESULT,以详细了解有关导致该异常的错误的信息。

有关可能的异常以及如何处理异常的更多信息,请参见处理网络应用程序中的异常

将 StreamSocket 用于蓝牙和 Wifi 直连

应用程序还可以使用 StreamSocket 以实现近距离设备间的网络连接。Windows.Networking.Proximity 命名空间中的类支持通过使用 Bluetooth 或 Wi-Fi Direct 的 StreamSocket 与附近设备建立网络连接。PeerFinder 和相关类(在 Windows.Networking.Proximity 命名空间中)可让你的应用程序发现邻近设备上该应用程序的其他实例。 然后应用程序可以使用点击特定动作或通过浏览创建与周围的对等应用程序的 StreamSocket 连接。 有关更多信息,请参见支持接近程度和轻击Windows.Networking.ProximityPeerFinderWindows.Devices.Bluetooth.Rfcomm接近程度示例Bluetooth Rfcomm 聊天示例

在 Windows Server 2012 上使用 StreamSocket

在 Windows Server 2012 和 Windows Server 2012 R2 中,Windows.Networking.dll 会无法加载(它用于实现 Windows.Networking.Sockets 命名空间中的大多数类),除非启用了媒体基础功能。这样一来,如果应用程序使用 StreamSocketWindows.Networking.Sockets 命名空间中的相关套接字类,那么当禁用 Media Foundation 功能时,该应用程序将失败。Windows Server 2012 或 Windows Server 2012 R2 安装时会禁用 Media Foundation 功能。

可以通过使用服务器管理器或在命令提示或脚本中输入以下文本在 Windows Server 2012 或 Windows Server 2012 R2 上启用 Media Foundation 功能。

dism /online /enable-feature /featurename:ServerMediaFoundation

启用 Media Foundation 功能后,系统会提示用户重新启动。一旦计算机重新启动,Windows.Networking.Sockets 命名空间中用于套接字和 WebSocket 的类将按预期工作。

要求

最低支持客户端

Windows 8 [Windows 应用商店应用程序, 桌面应用程序]

最低支持服务器

Windows Server 2012 [Windows 应用商店应用程序, 桌面应用程序]

最低支持电话

Windows Phone 8

命名空间

Windows.Networking.Sockets
Windows::Networking::Sockets [C++]

元数据

Windows.winmd

DLL

Windows.Networking.dll

Capabilities

internetClient
privateNetworkClientServer
ID_CAP_NETWORKING [Windows Phone]

另请参见

其他资源
连接到网络服务(使用 JavaScript 和 HTML 的 Windows Store 应用程序)
连接到网络服务(使用 C#/VB/C++ 和 XAML 的 Windows Store 应用程序)
处理网络应用程序中的异常
如何通过 TLS/SSL 保证套接字连接的安全(使用 JavaScript 和 HTML 的 Windows Store 应用程序)
如何通过 TLS/SSL 保证套接字连接的安全(使用 C#/VB/C++ 和 XAML 的 Windows Store 应用程序)
如何设置背景连接选项
如何使用高级套接字控件(使用 JavaScript 和 HTML 的 Windows Store 应用程序)
如何使用高级套接字控件(使用 C#/VB/C++ 和 XAML 的 Windows Store 应用程序)
快速入门:使用流套接字连接到网络资源(使用 JavaScript 和 HTML 的 Windows Store 应用程序)
快速入门:使用流套接字连接到网络资源(使用 C#/VB/C++ 和 XAML 的 Windows Store 应用程序)
支持接近程度和轻击
疑难解答和调试网络连接
引用
ControlChannelTrigger
IClosable
Object
PeerFinder
SetSocketMediaStreamingMode
StreamSocketListener
StreamSocketListener.ConnectAsync
Windows.Devices.Bluetooth.Rfcomm
Windows.Networking.Proximity
示例
Bluetooth Rfcomm 聊天示例
ControlChannelTrigger StreamSocket 示例
接近程度示例
StreamSocket 示例

 

 

本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈
显示:
© 2014 Microsoft. 版权所有。