DatagramSocket.GetOutputStreamAsync 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
| 名称 | 说明 |
|---|---|
| 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 方法之一。
- 成功调用其中一个 ConnectAsync 方法后,将 OutputStream 属性传递给 DataWriter 对象,并使用 DataWriter 对象上的方法发送数据。
GetOutputStreamAsync 方法允许应用使用 DatagramSocket 对象将 UDP 数据报发送到多个网络目标。 每次调用 GetOutputStreamAsync(EndpointPair) 方法时,应用都可以在 endpointPair 参数中为 RemoteHostName 和 RemoteServiceName 成员设置不同的值。
若要从 DatagramSocket 对象上的任何远程终结点接收数据,应用必须将 MessageReceived 事件分配给事件处理程序,然后调用 BindEndpointAsync 或 BindServiceNameAsync 方法,在调用 GetOutputStreamAsync 方法之前将 DatagramSocket 绑定到本地服务名称或 UDP 端口。 必须在任何绑定或连接操作之前设置 MessageReceived 事件处理程序,否则将发生错误。
操作的典型顺序如下所示:
- 创建 DatagramSocket。
- 使用 Control 属性检索 DatagramSocketControl 对象并设置任何高级控件。 大多数应用通常不需要此步骤。
- 将 MessageReceived 事件分配给事件处理程序。
- 调用 GetOutputStreamAsync(EndpointPair) 方法以获取 OutputStream 以将数据发送到远程终结点。 GetOutputStreamAsync(EndpointPair) 方法还将 DatagramSocket 绑定到本地服务名称或 UDP 端口以及使用 endpointPair 参数的本地主机名或 IP 地址。
- 每当来自远程终结点的消息到达时,都会调用 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 方法之一。
- 成功调用其中一个 ConnectAsync 方法后,将 OutputStream 属性传递给 DataWriter 对象,并使用 DataWriter 对象上的方法发送数据。
GetOutputStreamAsync 方法允许应用使用 DatagramSocket 对象将 UDP 数据报发送到多个网络目标。 每次调用 [GetOutputStreamAsync(HostName, String) 方法时,应用都可以为 remoteHostName 和 remoteServiceName 参数设置不同的值。
ConnectAsync 方法允许应用使用 DatagramSocket 对象将 UDP 数据报发送到单个网络目标。
若要从 DatagramSocket 对象上的任何远程终结点接收数据,应用必须将 MessageReceived 事件分配给事件处理程序,然后调用 BindEndpointAsync 或 BindServiceNameAsync 方法,在调用 GetOutputStreamAsync 方法之前将 DatagramSocket 绑定到本地服务名称或 UDP 端口。 必须在任何绑定或连接操作之前设置 MessageReceived 事件处理程序,否则将发生错误。
操作的典型顺序如下所示:
- 创建 DatagramSocket。
- 使用 Control 属性检索 DatagramSocketControl 对象并设置任何高级控件。 大多数应用通常不需要此步骤。
- 将 MessageReceived 事件分配给事件处理程序。
- 将 DatagramSocket 绑定到本地服务名称或 UDP 端口。
- 每当来自远程终结点的消息到达时,都会调用 MessageReceived 事件处理程序。
- 调用 GetOutputStreamAsync 方法以获取 OutputStream 以将数据发送到远程终结点。 可以使用来自 MessageReceived 事件处理程序的 DatagramSocketMessageReceivedEventArgs 中包含的信息,通过创作特定传入消息的远程终结点建立 OutputStream。 当应用使用 BindEndpointAsync 或 BindServiceNameAsync 方法绑定到本地服务名称或 UDP 端口时,GetOutputStreamAsync 方法也不同于 ConnectAsync 方法。 使用 GetOutputStreamAsync 方法,应用将从发送到本地服务名称或 UDP 端口的任何远程目标接收数据包。 使用 ConnectAsync 方法,应用将仅接收从作为参数传递给 ConnectAsync 方法的远程目标的数据包。