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

属性

Windows 要求

应用功能
ID_CAP_NETWORKING [Windows Phone]

注解

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 对象上提供 RemoteHostNameRemoteServiceName 属性。 如果 RemoteHostNamenullRemoteServiceNamenull 或空字符串,则会发生错误。

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

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

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

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

典型的操作顺序如下:

  1. 创建 DatagramSocket
  2. 使用 Control 属性可检索 DatagramSocketControl 对象并设置任何高级控件。 大多数应用通常不需要此步骤。
  3. MessageReceived 事件分配给事件处理程序。
  4. 调用 GetOutputStreamAsync (EndpointPair) 方法以获取 OutputStream 以将数据发送到远程终结点。 GetOutputStreamAsync (EndpointPair) 方法还将使用 endpointPair 参数将 DatagramSocket 绑定到本地服务名称或 UDP 端口以及本地主机名或 IP 地址。
  5. 每当来自远程终结点的消息到达时,都会调用 MessageReceived 事件处理程序。 当应用使用 BindEndpointAsyncBindServiceNameAsync 方法绑定本地服务名称或 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

属性

Windows 要求

应用功能
ID_CAP_NETWORKING [Windows Phone]

注解

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 端口。

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

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

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

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

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

典型的操作顺序如下:

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

另请参阅

适用于