语言

DatagramSocket.GetOutputStreamAsync 方法

定义

重载

名称 说明
GetOutputStreamAsync(EndpointPair)

启动一个操作,将 IOutputStream 获取到 EndpointPair 对象指定的远程网络目标,然后可用于发送网络数据。

GetOutputStreamAsync(HostName, String)

启动一个操作,将 IOutputStream 获取到由远程主机名指定的远程目标,以及随后可用于发送网络数据的远程服务名称。

GetOutputStreamAsync(EndpointPair)

启动一个操作,将 IOutputStream 获取到 EndpointPair 对象指定的远程网络目标,然后可用于发送网络数据。

public:
 virtual IAsyncOperation<IOutputStream ^> ^ GetOutputStreamAsync(EndpointPair ^ endpointPair) = GetOutputStreamAsync;
/// [Windows.Foundation.Metadata.Overload("GetOutputStreamWithEndpointPairAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncOperation<IOutputStream> GetOutputStreamAsync(EndpointPair const& endpointPair);
[Windows.Foundation.Metadata.Overload("GetOutputStreamWithEndpointPairAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncOperation<IOutputStream> GetOutputStreamAsync(EndpointPair endpointPair);
function getOutputStreamAsync(endpointPair)
Public Function GetOutputStreamAsync (endpointPair As EndpointPair) As IAsyncOperation(Of IOutputStream)

参数

endpointPair
EndpointPair

表示本地主机名或本地 IP 地址、本地服务名称或本地 UDP 端口、远程主机名或远程 IP 地址以及远程服务名称或远程 UDP 端口的终结点对。

返回

一个表示异步操作的 IOutputStream 。

属性

注解

DatagramSocket 上的 GetOutputStreamAsync(EndpointPair) 方法用于启动操作,以便将 IOutputStream 获取到 EndpointPair 对象指定的远程网络目标。 然后,可以使用 IOutputStream 将数据发送到远程目标。

GetOutputStreamAsync(EndpointPair) 方法在成功完成时将返回 IOutputStream 。 写入该流会将数据报发送到指定的远程主机和服务名称。 IOutputStream 将始终发送到 ConnectAsync 方法中指定的远程主机名和远程服务名称。

在 endpointPair 参数中传递的 EndpointPair 的 RemoteHostName 属性可以包含远程目标的主机名或 IP 地址。 在 endpointPair 参数中传递的 EndpointPair 的 RemoteServiceName 属性可以包含远程目标的服务名称或 UDP 端口。 如果 RemoteHostName 属性包含主机名,则 GetOutputStreamAsync(EndpointPair) 方法会导致远程主机名的名称解析。 如果 RemoteServiceName 属性包含服务名称,则 GetOutputStreamAsync 方法会导致远程服务名称解析为 UDP 端口。

必须在在 endpointPair 参数中传递的 EndpointPair 对象上提供 RemoteHostName 和 RemoteServiceName 属性。 如果 RemoteHostName 为 null 或 RemoteServiceName 为 null 或空字符串,则会发生错误。

如果在 endpointPair 参数中传递的 EndpointPair 对象包含 null LocalHostName 属性,则系统将提供将使用的本地 IP 地址。 如果在 endpointPair 参数中传递的 EndpointPair 对象包含 LocalServiceName 属性的空字符串,则系统将提供将使用的本地 UDP 端口。

可通过两种方法使用 DatagramSocket 将 UDP 数据报发送到远程网络目标:

GetOutputStreamAsync 方法允许应用使用 DatagramSocket 对象将 UDP 数据报发送到多个网络目标。 每次调用 GetOutputStreamAsync(EndpointPair) 方法时,应用都可以在 endpointPair 参数中为 RemoteHostName 和 RemoteServiceName 成员设置不同的值。

若要从 DatagramSocket 对象上的任何远程终结点接收数据,应用必须将 MessageReceived 事件分配给事件处理程序,然后调用 BindEndpointAsync 或 BindServiceNameAsync 方法,在调用 GetOutputStreamAsync 方法之前将 DatagramSocket 绑定到本地服务名称或 UDP 端口。 必须在任何绑定或连接操作之前设置 MessageReceived 事件处理程序,否则将发生错误。

操作的典型顺序如下所示:

  1. 创建 DatagramSocket。
  2. 使用 Control 属性检索 DatagramSocketControl 对象并设置任何高级控件。 大多数应用通常不需要此步骤。
  3. 将 MessageReceived 事件分配给事件处理程序。
  4. 调用 GetOutputStreamAsync(EndpointPair) 方法以获取 OutputStream 以将数据发送到远程终结点。 GetOutputStreamAsync(EndpointPair) 方法还将 DatagramSocket 绑定到本地服务名称或 UDP 端口以及使用 endpointPair 参数的本地主机名或 IP 地址。
  5. 每当来自远程终结点的消息到达时,都会调用 MessageReceived 事件处理程序。 当应用使用 BindEndpointAsync 或 BindServiceNameAsync 方法绑定本地服务名称或 UDP 端口时,GetOutputStreamAsync 方法也不同于 ConnectAsync 方法。 使用 GetOutputStreamAsync 方法,应用将从发送到本地服务名称或 UDP 端口的任何远程目标接收数据包。 使用 ConnectAsync 方法,应用将仅接收从作为参数传递给 ConnectAsync 方法的远程目标的数据包。

BindServiceNameAsync(String, NetworkAdapter) 方法可用于在调用 GetOutputStreamAsync(EndpointPair) 方法之前指定网络适配器。 指定的适配器用于绑定操作。 如果在调用 BindServiceNameAsync(String, NetworkAdapter) 和传递给 GetOutputStreamAsync( EndpointPair) 的 endpointPair 参数后指定 LocalHostName,则 GetOutputStreamAsync(EndpointPair) 方法将失败。

另请参阅

适用于

GetOutputStreamAsync(HostName, String)

启动一个操作,将 IOutputStream 获取到由远程主机名指定的远程目标,以及随后可用于发送网络数据的远程服务名称。

public:
 virtual IAsyncOperation<IOutputStream ^> ^ GetOutputStreamAsync(HostName ^ remoteHostName, Platform::String ^ remoteServiceName) = GetOutputStreamAsync;
/// [Windows.Foundation.Metadata.Overload("GetOutputStreamAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncOperation<IOutputStream> GetOutputStreamAsync(HostName const& remoteHostName, winrt::hstring const& remoteServiceName);
[Windows.Foundation.Metadata.Overload("GetOutputStreamAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncOperation<IOutputStream> GetOutputStreamAsync(HostName remoteHostName, string remoteServiceName);
function getOutputStreamAsync(remoteHostName, remoteServiceName)
Public Function GetOutputStreamAsync (remoteHostName As HostName, remoteServiceName As String) As IAsyncOperation(Of IOutputStream)

参数

remoteHostName
HostName

远程主机名或远程 IP 地址。

remoteServiceName
String

Platform::String

winrt::hstring

远程服务名称或远程 UDP 端口。

返回

一个表示异步操作的 IOutputStream 。

属性

注解

DatagramSocket 上的 [GetOutputStreamAsync(HostName, String) 方法用于启动操作,以便将 IOutputStream 获取远程主机名和远程服务名称指定的远程网络目标。 然后,可以使用 IOutputStream 将数据发送到远程目标。

[GetOutputStreamAsync(HostName, String) 方法在成功完成时将返回 IOutputStream 。 写入该流会将数据报发送到指定的远程主机和服务名称。 IOutputStream 将始终发送到 ConnectAsync 方法中指定的远程主机名和远程服务名称。

remoteHostName 参数可以包含远程目标的主机名或 IP 地址。 remoteServiceName 参数可以包含远程目标的服务名称或 UDP 端口。 如果 remoteHostName 参数包含主机名,则 [GetOutputStreamAsync(HostName, String) 方法会导致远程主机名的名称解析。 如果 remoteServiceName 参数包含服务名称,则 [GetOutputStreamAsync(HostName, String) 方法会导致远程服务名称解析为 UDP 端口。

必须提供 remoteHostName 和 remoteServiceName 参数。 如果 remoteHostName 参数为 null 或 remoteServiceName 参数为 null 或空字符串,则会发生错误。

可通过两种方法使用 DatagramSocket 将 UDP 数据报发送到远程网络目标:

GetOutputStreamAsync 方法允许应用使用 DatagramSocket 对象将 UDP 数据报发送到多个网络目标。 每次调用 [GetOutputStreamAsync(HostName, String) 方法时,应用都可以为 remoteHostName 和 remoteServiceName 参数设置不同的值。

ConnectAsync 方法允许应用使用 DatagramSocket 对象将 UDP 数据报发送到单个网络目标。

若要从 DatagramSocket 对象上的任何远程终结点接收数据,应用必须将 MessageReceived 事件分配给事件处理程序,然后调用 BindEndpointAsync 或 BindServiceNameAsync 方法,在调用 GetOutputStreamAsync 方法之前将 DatagramSocket 绑定到本地服务名称或 UDP 端口。 必须在任何绑定或连接操作之前设置 MessageReceived 事件处理程序,否则将发生错误。

操作的典型顺序如下所示:

  1. 创建 DatagramSocket。
  2. 使用 Control 属性检索 DatagramSocketControl 对象并设置任何高级控件。 大多数应用通常不需要此步骤。
  3. 将 MessageReceived 事件分配给事件处理程序。
  4. 将 DatagramSocket 绑定到本地服务名称或 UDP 端口。
  5. 每当来自远程终结点的消息到达时,都会调用 MessageReceived 事件处理程序。
  6. 调用 GetOutputStreamAsync 方法以获取 OutputStream 以将数据发送到远程终结点。 可以使用来自 MessageReceived 事件处理程序的 DatagramSocketMessageReceivedEventArgs 中包含的信息,通过创作特定传入消息的远程终结点建立 OutputStream。 当应用使用 BindEndpointAsync 或 BindServiceNameAsync 方法绑定到本地服务名称或 UDP 端口时,GetOutputStreamAsync 方法也不同于 ConnectAsync 方法。 使用 GetOutputStreamAsync 方法,应用将从发送到本地服务名称或 UDP 端口的任何远程目标接收数据包。 使用 ConnectAsync 方法,应用将仅接收从作为参数传递给 ConnectAsync 方法的远程目标的数据包。

另请参阅

适用于