StreamSocket.ConnectAsync 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
ConnectAsync(EndpointPair) |
对 StreamSocket 对象启动异步操作,以连接到指定为 EndpointPair 对象的远程网络目标。 |
ConnectAsync(EndpointPair, SocketProtectionLevel) |
对 StreamSocket 对象启动异步操作,以连接到指定为 EndpointPair 对象和 SocketProtectionLevel 枚举的远程网络目标。 此方法不可从 JavaScript 调用。 |
ConnectAsync(HostName, String) |
对 StreamSocket 对象启动异步操作,以连接到由远程主机名和远程服务名称指定的远程网络目标。 |
ConnectAsync(HostName, String, SocketProtectionLevel) |
对 StreamSocket 对象启动异步操作,以连接到由远程主机名、远程服务名称和 SocketProtectionLevel 指定的远程目标。 |
ConnectAsync(HostName, String, SocketProtectionLevel, NetworkAdapter) |
对指定本地网络适配器上的 StreamSocket 对象启动异步操作,以连接到由远程主机名、远程服务名称和 SocketProtectionLevel 指定的远程目标。 |
ConnectAsync(EndpointPair)
对 StreamSocket 对象启动异步操作,以连接到指定为 EndpointPair 对象的远程网络目标。
public:
virtual IAsyncAction ^ ConnectAsync(EndpointPair ^ endpointPair) = ConnectAsync;
/// [Windows.Foundation.Metadata.Overload("ConnectWithEndpointPairAsync")]
IAsyncAction ConnectAsync(EndpointPair const& endpointPair);
[Windows.Foundation.Metadata.Overload("ConnectWithEndpointPairAsync")]
public IAsyncAction ConnectAsync(EndpointPair endpointPair);
function connectAsync(endpointPair)
Public Function ConnectAsync (endpointPair As EndpointPair) As IAsyncAction
参数
- endpointPair
- EndpointPair
EndpointPair 对象,指定本地主机名或 IP 地址、本地服务名称或 TCP 端口、远程主机名或远程 IP 地址以及远程网络目标的远程服务名称或远程 TCP 端口。
返回
对 StreamSocket 对象执行异步连接操作。
- 属性
Windows 要求
应用功能 |
ID_CAP_NETWORKING [Windows Phone]
internetClientServer
privateNetworkClientServer
|
注解
如果在 endpointPair 参数中传递的 EndpointPair 对象包含 LocalHostName 属性的 null,则系统会提供将使用的本地 IP 地址。 如果在 endpointPair 参数中传递的 EndpointPair 对象包含 LocalServiceName 属性的空字符串,则系统会提供将使用的本地 TCP 端口。
在 UWP 应用中,当需要代理才能完成连接时, StreamSocket 类支持连接到远程终结点。 这种对代理的支持是自动的,对应用是透明的。 指定本地主机地址时,不支持通过代理进行连接,因此在 endpointPair 参数中传递的 LocalHostName 属性必须为 null。 有关更多详细信息,请参阅 StreamSocket 类参考中有关对代理的支持的注释。
在 Windows Phone 8.x 应用中,StreamSocket 类不提供对代理的自动支持。
另请参阅
- ConnectAsync(HostName, String)
- ConnectAsync(EndpointPair, SocketProtectionLevel)
- ConnectAsync(HostName, String, SocketProtectionLevel)
- ConnectAsync(HostName, String, SocketProtectionLevel, NetworkAdapter)
- EndpointPair
- 如何设置套接字操作的超时
- 如何设置套接字操作的超时
适用于
ConnectAsync(EndpointPair, SocketProtectionLevel)
对 StreamSocket 对象启动异步操作,以连接到指定为 EndpointPair 对象和 SocketProtectionLevel 枚举的远程网络目标。 此方法不可从 JavaScript 调用。
public:
virtual IAsyncAction ^ ConnectAsync(EndpointPair ^ endpointPair, SocketProtectionLevel protectionLevel) = ConnectAsync;
/// [Windows.Foundation.Metadata.Overload("ConnectWithEndpointPairAndProtectionLevelAsync")]
IAsyncAction ConnectAsync(EndpointPair const& endpointPair, SocketProtectionLevel const& protectionLevel);
[Windows.Foundation.Metadata.Overload("ConnectWithEndpointPairAndProtectionLevelAsync")]
public IAsyncAction ConnectAsync(EndpointPair endpointPair, SocketProtectionLevel protectionLevel);
function connectAsync(endpointPair, protectionLevel)
Public Function ConnectAsync (endpointPair As EndpointPair, protectionLevel As SocketProtectionLevel) As IAsyncAction
参数
- endpointPair
- EndpointPair
EndpointPair 对象,指定本地主机名或 IP 地址、本地服务名称或 TCP 端口、远程主机名或远程 IP 地址以及远程网络目标的远程服务名称或远程 TCP 端口。
- protectionLevel
- SocketProtectionLevel
表示 StreamSocket 对象的完整性和加密的保护级别。
返回
对 StreamSocket 对象执行异步连接操作。
- 属性
Windows 要求
应用功能 |
ID_CAP_NETWORKING [Windows Phone]
internetClientServer
privateNetworkClientServer
|
注解
如果在 endpointPair 参数中传递的 EndpointPair 对象包含 LocalHostName 属性的 null,则系统会提供将使用的本地 IP 地址。 如果在 endpointPair 参数中传递的 EndpointPair 对象包含 LocalServiceName 属性的空字符串,则系统会提供将使用的本地 TCP 端口。
如果在 endpointPair 参数中传递的 EndpointPair 对象包含 LocalServiceName 属性的 null,则会发生错误。
[ConnectAsync (EndpointPair, SocketProtectionLevel) 方法未在 JavaScript 中公开。 无法从 JavaScript 调用此方法,因为它的参数数与 ConnectAsync (HostName、 String) 方法相同。
使用 JavaScript 编写的应用无法直接使用 SSL 通过 EndpointPair 连接 StreamSocket。 为了使用 SSL 连接 EndpointPair ,JavaScript 应用可以改用以下代码。
var clientSocket = new Windows.Networking.Sockets.StreamSocket();
var remoteName = new Windows.Networking.HostName("www.contoso.com");
var myEndpointPair = EndpointPair();
// Set properties needed on the EndpointPair
// We only set remote properties and the localServiceName,
// But the localHostName could also be set
myEndpointPair.localServiceName = "12345";
myEndpointPair.remoteHostName = remoteName;
myEndpointPair.remoteServiceName = "http";
// First connect the socket without SSL
clientSocket.connectAsync(myEendpointPair>).then(function () {
// Now upgrade the connection to SSL
clientSocket.upgradeToSslAsync(SocketProtectionLevel.Ssl).then(function () {
// now connected using SSL
}
}
当 protectionLevel 参数设置为需要 SSL 或 TLS 的值时,如果远程终结点不支持 SSL 或 TLS,则套接字连接操作可能不会超时。 如果初始连接操作成功,但远程终结点在 SSL 握手期间未终止连接,则可能会发生这种情况。 为了防止出现这种情况,应用应在请求 SSL/TLS 时对连接操作设置超时,并在超时过期时中止该操作。 有关在套接字操作上使用 JavaScript 设置超时的详细信息,请参阅 如何在套接字操作上设置超时 。 有关在套接字操作上使用 VB、C# 或 C++ 设置超时的详细信息,请参阅 如何在套接字操作上设置超时 。
在 UWP 应用中,当需要代理才能完成连接时, StreamSocket 类支持连接到远程终结点。 这种对代理的支持是自动的,对应用是透明的。 指定本地主机地址时,不支持通过代理进行连接,因此在 endpointPair 参数中传递的 LocalHostName 属性必须为 null。 有关更多详细信息,请参阅 StreamSocket 类参考中有关对代理的支持的注释。
在 Windows Phone 8.x 应用中,StreamSocket 类不提供对代理的自动支持。
另请参阅
- ConnectAsync(EndpointPair)
- ConnectAsync(HostName, String)
- ConnectAsync(HostName, String, SocketProtectionLevel)
- ConnectAsync(HostName, String, SocketProtectionLevel, NetworkAdapter)
- EndpointPair
- SocketProtectionLevel
- 如何设置套接字操作的超时
- 如何设置套接字操作的超时
适用于
ConnectAsync(HostName, String)
对 StreamSocket 对象启动异步操作,以连接到由远程主机名和远程服务名称指定的远程网络目标。
public:
virtual IAsyncAction ^ ConnectAsync(HostName ^ remoteHostName, Platform::String ^ remoteServiceName) = ConnectAsync;
/// [Windows.Foundation.Metadata.DefaultOverload]
/// [Windows.Foundation.Metadata.Overload("ConnectAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction ConnectAsync(HostName const& remoteHostName, winrt::hstring const& remoteServiceName);
[Windows.Foundation.Metadata.DefaultOverload]
[Windows.Foundation.Metadata.Overload("ConnectAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncAction ConnectAsync(HostName remoteHostName, string remoteServiceName);
function connectAsync(remoteHostName, remoteServiceName)
Public Function ConnectAsync (remoteHostName As HostName, remoteServiceName As String) As IAsyncAction
参数
- remoteHostName
- HostName
远程网络目标的主机名或 IP 地址。 对于蓝牙 RFCOMM,这是一个 MAC 地址。
- remoteServiceName
-
String
Platform::String
winrt::hstring
远程网络目标的服务名称或 TCP 端口号。 对于蓝牙 RFCOMM,这是蓝牙地址。
返回
对 StreamSocket 对象执行异步连接操作。
- 属性
Windows 要求
应用功能 |
ID_CAP_NETWORKING [Windows Phone]
internetClientServer
privateNetworkClientServer
|
注解
必须提供 remoteHostName 和 remoteServiceName 参数。 如果 remoteHostName 为 null 或 remoteServiceName 为 null 或空字符串,则会发生错误。
在 UWP 应用中,当需要代理才能完成连接时, StreamSocket 类支持连接到远程终结点。 这种对代理的支持是自动的,对应用是透明的。 有关更多详细信息,请参阅 StreamSocket 类参考中有关对代理的支持的注释。
在 Windows Phone 8.x 应用中,StreamSocket 类不提供对代理的自动支持。
另请参阅
- ConnectAsync(EndpointPair)
- ConnectAsync(EndpointPair, SocketProtectionLevel)
- ConnectAsync(HostName, String, SocketProtectionLevel)
- ConnectAsync(HostName, String, SocketProtectionLevel, NetworkAdapter)
- HostName
- 如何设置套接字操作的超时
- 如何设置套接字操作的超时
适用于
ConnectAsync(HostName, String, SocketProtectionLevel)
对 StreamSocket 对象启动异步操作,以连接到由远程主机名、远程服务名称和 SocketProtectionLevel 指定的远程目标。
public:
virtual IAsyncAction ^ ConnectAsync(HostName ^ remoteHostName, Platform::String ^ remoteServiceName, SocketProtectionLevel protectionLevel) = ConnectAsync;
/// [Windows.Foundation.Metadata.Overload("ConnectWithProtectionLevelAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction ConnectAsync(HostName const& remoteHostName, winrt::hstring const& remoteServiceName, SocketProtectionLevel const& protectionLevel);
[Windows.Foundation.Metadata.Overload("ConnectWithProtectionLevelAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncAction ConnectAsync(HostName remoteHostName, string remoteServiceName, SocketProtectionLevel protectionLevel);
function connectAsync(remoteHostName, remoteServiceName, protectionLevel)
Public Function ConnectAsync (remoteHostName As HostName, remoteServiceName As String, protectionLevel As SocketProtectionLevel) As IAsyncAction
参数
- remoteHostName
- HostName
远程网络目标的主机名或 IP 地址。 对于蓝牙 RFCOMM,这是一个 MAC 地址。
- remoteServiceName
-
String
Platform::String
winrt::hstring
远程网络目标的服务名称或 TCP 端口号。 对于蓝牙 RFCOMM,这是蓝牙地址。
- protectionLevel
- SocketProtectionLevel
表示 StreamSocket 对象的完整性和加密的保护级别。
返回
对 StreamSocket 对象执行异步连接操作。
- 属性
Windows 要求
应用功能 |
ID_CAP_NETWORKING [Windows Phone]
internetClientServer
privateNetworkClientServer
|
注解
必须提供 remoteHostName 和 remoteServiceName 参数。 如果 remoteHostName 为 null 或 remoteServiceName 为 null 或空字符串,则会发生错误。
当 protectionLevel 参数设置为需要 SSL 或 TLS 的值时,如果远程网络目标不支持 SSL 或 TLS,则套接字连接操作可能不会超时。 如果初始连接操作成功,但远程主机在 SSL 握手期间未终止连接,则可能会发生这种情况。 为了防止出现这种情况,应用应在请求 SSL/TLS 时对连接操作设置超时,并在超时过期时中止该操作。 有关在套接字操作上使用 JavaScript 设置超时的详细信息,请参阅 如何在套接字操作上设置超时 。 有关在套接字操作上使用 VB、C# 或 C++ 设置超时的详细信息,请参阅 如何在套接字操作上设置超时 。
在 UWP 应用中,当需要代理才能完成连接时, StreamSocket 类支持连接到远程终结点。 这种对代理的支持是自动的,对应用是透明的。 有关更多详细信息,请参阅 StreamSocket 类参考中有关对代理的支持的注释。
在 Windows Phone 8.x 应用中,StreamSocket 类不提供对代理的自动支持。
另请参阅
- ConnectAsync(EndpointPair)
- ConnectAsync(HostName, String)
- ConnectAsync(EndpointPair, SocketProtectionLevel)
- ConnectAsync(HostName, String, SocketProtectionLevel, NetworkAdapter)
- HostName
- SocketProtectionLevel
- 如何设置套接字操作的超时
- 如何设置套接字操作的超时
适用于
ConnectAsync(HostName, String, SocketProtectionLevel, NetworkAdapter)
对指定本地网络适配器上的 StreamSocket 对象启动异步操作,以连接到由远程主机名、远程服务名称和 SocketProtectionLevel 指定的远程目标。
public:
virtual IAsyncAction ^ ConnectAsync(HostName ^ remoteHostName, Platform::String ^ remoteServiceName, SocketProtectionLevel protectionLevel, NetworkAdapter ^ adapter) = ConnectAsync;
/// [Windows.Foundation.Metadata.Overload("ConnectWithProtectionLevelAndAdapterAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction ConnectAsync(HostName const& remoteHostName, winrt::hstring const& remoteServiceName, SocketProtectionLevel const& protectionLevel, NetworkAdapter const& adapter);
[Windows.Foundation.Metadata.Overload("ConnectWithProtectionLevelAndAdapterAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncAction ConnectAsync(HostName remoteHostName, string remoteServiceName, SocketProtectionLevel protectionLevel, NetworkAdapter adapter);
function connectAsync(remoteHostName, remoteServiceName, protectionLevel, adapter)
Public Function ConnectAsync (remoteHostName As HostName, remoteServiceName As String, protectionLevel As SocketProtectionLevel, adapter As NetworkAdapter) As IAsyncAction
参数
- remoteHostName
- HostName
远程网络目标的主机名或 IP 地址。 对于蓝牙 RFCOMM,这是一个 MAC 地址。
- remoteServiceName
-
String
Platform::String
winrt::hstring
远程网络目标的服务名称或 TCP 端口号。 对于蓝牙 RFCOMM,这是蓝牙地址。
- protectionLevel
- SocketProtectionLevel
表示 StreamSocket 对象的完整性和加密的保护级别。
- adapter
- NetworkAdapter
用于 StreamSocket 对象上的连接操作的本地网络适配器。
返回
对 StreamSocket 对象执行异步连接操作。
- 属性
注解
[ConnectAsync (Hostname、String、SocketProtectionLevel、NetworkAdapter) 方法绑定到本地计算机上的 适配器 参数中指定的网络接口,以及 remoteHostName 和 remoteServiceName 参数中指定的远程主机名和服务名称,以及 protectionLevel 参数中指定的保护级别。
必须提供 remoteHostName 和 remoteServiceName 参数。 如果 remoteHostName 为 null 或 remoteServiceName 为 null 或空字符串,则会发生错误。 如果 适配器 参数为 null,则会发生错误。
[ConnectAsync (Hostname、String、SocketProtectionLevel、NetworkAdapter) 方法使用的名称解析机制仅限于域名系统 (DNS) 命名空间的指定接口。
使用指定的网络适配器是尽最大努力的。 在弱主机或转发模式下配置的适配器的系统可能使用指定的适配器以外的适配器。
当 protectionLevel 参数设置为需要 SSL 或 TLS 的值时,如果远程网络目标不支持 SSL 或 TLS,则套接字连接操作可能不会超时。 如果初始连接操作成功,但远程主机在 SSL 握手期间未终止连接,则可能会发生这种情况。 为了防止出现这种情况,应用应在请求 SSL/TLS 时对连接操作设置超时,并在超时过期时中止该操作。 有关在套接字操作上使用 JavaScript 设置超时的详细信息,请参阅 如何在套接字操作上设置超时 。 有关在套接字操作上使用 VB、C# 或 C++ 设置超时的详细信息,请参阅 如何在套接字操作上设置超时 。
应用可以通过使用 NetworkInformation.GetHostNames 方法检查 HostName 实例 (来检索有效的 NetworkAdapter,例如,) 并从 Hostname.IPInformation 属性检索 IPInformation 对象。 IPInformation.NetworkAdapter 属性可用于检索关联的 NetworkAdapter。
在 UWP 应用中,当需要代理才能完成连接时, StreamSocket 类支持连接到远程终结点。 这种对代理的支持是自动的,对应用是透明的。 但是,选择特定网络适配器时,不支持通过代理进行连接。 因此,在使用 [ConnectAsync (HostName, String, SocketProtectionLevel, NetworkAdapter) 方法时,将禁用代理支持。 有关更多详细信息,请参阅 StreamSocket 类参考中有关对代理的支持的注释。
在 Windows Phone 8.x 应用中,StreamSocket 类不提供对代理的自动支持。
另请参阅
- ConnectAsync(EndpointPair)
- ConnectAsync(HostName, String)
- ConnectAsync(EndpointPair, SocketProtectionLevel)
- ConnectAsync(HostName, String, SocketProtectionLevel)
- IPInformation
- NetworkAdapter
- 如何设置套接字操作的超时
- 如何设置套接字操作的超时