DatagramSocket.GetOutputStreamAsync 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| 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 屬性可包含遠端目的地的主機名稱或 IP 位址。 endpointPair 參數中傳遞的 EndpointPair 屬性可包含服務名稱或遠端目的地的 UDP 埠。 如果 RemoteHostName 屬性包含主機名稱,則使用 GetOutputStreamAsync(EndpointPair) 方法就能解析該遠端主機名稱。 如果 RemoteServiceName 屬性包含服務名稱,則 GetOutputStreamAsync 方法會將遠端服務名稱解析為 UDP 埠。
RemoteHostName 與 RemoteServiceName 屬性必須在 endpointPair 參數中傳遞的 EndpointPair 物件中提供。 若 RemoteHostName 為 空 、 RemoteServiceName 為 空 或為空字串,則會發生錯誤。
如果 endpointPair 參數中傳遞的 EndpointPair 物件包含空的 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 方法,將 DatagramSocket 綁定到本地服務名稱或 UDP 埠,然後再呼叫 GetOutputStreamAsync 方法。 MessageReceived 事件處理器必須在任何綁定或連接操作前設定,否則會發生錯誤。
典型的操作順序如下:
- 建立 DatagramSocket。
- 使用 Control 屬性來取得 DatagramSocketControl 物件並設定進階控制項。 大多數應用程式通常不需要這個步驟。
- 將 MessageReceived 事件指派給事件處理器。
- 呼叫 GetOutputStreamAsync(EndpointPair) 方法,讓 OutputStream 將資料傳送到遠端端點。 GetOutputStreamAsync(EndpointPair) 方法也會使用 endpointPair 參數,將 DatagramSocket 綁定到本地服務名稱或 UDP 埠,以及本地主機名稱或 IP 位址。
- 每當遠端端的訊息抵達時,都會呼叫 MessageReceived 事件處理程序。 GetOutputStreamAsync 方法也與 ConnectAsync 方法不同,當應用程式使用 BindEndpointAsync 或 BindServiceNameAsync 方法來綁定本地服務名稱或 UDP 埠時。 使用 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 方法,將 DatagramSocket 綁定到本地服務名稱或 UDP 埠,然後再呼叫 GetOutputStreamAsync 方法。 MessageReceived 事件處理器必須在任何綁定或連接操作前設定,否則會發生錯誤。
典型的操作順序如下:
- 建立 DatagramSocket。
- 使用 Control 屬性來取得 DatagramSocketControl 物件並設定進階控制項。 大多數應用程式通常不需要這個步驟。
- 將 MessageReceived 事件指派給事件處理器。
- 將 DatagramSocket 綁定到本地服務名稱或 UDP 埠。
- 每當遠端端的訊息抵達時,都會呼叫 MessageReceived 事件處理程序。
- 呼叫 GetOutputStreamAsync 方法,讓 OutputStream 將資料傳送到遠端端點。 你可以利用 MessageReceived 事件處理器中 DatagramSocketMessageReceivedEventArgs 的資訊,與撰寫特定來電訊息的遠端端點建立 OutputStream。 GetOutputStreamAsync 方法也與 ConnectAsync 方法不同,當應用程式使用 BindEndpointAsync 或 BindServiceNameAsync 方法綁定到本地服務名稱或 UDP 埠時。 使用 GetOutputStreamAsync 方法,應用程式將接收來自任何遠端目的地的封包,這些封包發送到本地服務名稱或 UDP 埠。 使用 ConnectAsync 方法時,應用程式只會接收來自遠端目的地的封包,這些封包作為參數傳給 ConnectAsync 方法。