DatagramSocket.ConnectAsync 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
ConnectAsync(EndpointPair) |
啟動 DatagramSocket 上指定 為 EndpointPair 物件的遠端網路目的地的連線作業。 |
ConnectAsync(HostName, String) |
啟動 DatagramSocket 上由 遠端主機名和遠端服務名稱所指定的遠端目的地的連線作業。 |
ConnectAsync(EndpointPair)
啟動 DatagramSocket 上指定 為 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 位址、本機服務名稱或 UDP 埠、遠端主機名或遠端 IP 位址,以及遠端網路目的地的遠端服務名稱或遠端 UDP 埠。
傳回
DatagramSocket物件上的非同步連接作業。
- 屬性
Windows 需求
應用程式功能 |
ID_CAP_NETWORKING [Windows Phone]
internetClientServer
privateNetworkClientServer
|
備註
此 ConnectAsync (DatagramSocket 上的 EndPointPair) 方法是用來定義使用 OutputStream 屬性時,將傳送資料包的本機和遠端端點。 這個方法也會限制將接受至 endpointPair 參數中遠端主機名之封包的遠端 IP 位址。 只有符合endpointPair參數中遠端端點的傳入封包會觸發DatagramSocket上的MessageReceived事件。
應用程式稍後可以在DatagramSocket的OutputStream屬性上呼叫WriteAsync方法,或將OutputStream傳遞至DataWriter物件,以及呼叫DataWriter物件的方法,將網路資料傳送至遠端網路目的地。
在 endpointPair參數中傳遞之EndpointPair的RemoteHostName屬性可以包含遠端目的地的主機名稱或 IP 位址。 在 endpointPair參數中傳遞之EndpointPair的RemoteServiceName屬性可以包含遠端目的地的服務名稱或 UDP 埠。 如果 RemoteHostName 屬性包含主機名稱,則 ConnectAsync (EndPointPair) 方法會將遠端主機名解析為 IP 位址。 如果EndpointPair的RemoteServiceName屬性包含服務名稱,則 ConnectAsync (EndPointPair) 方法會將遠端服務名稱解析為 UDP 埠號碼。
預設可辨識的服務名稱字串是本機電腦上 %windir%\System32\drivers\etc\services 檔案中列出的服務名稱。 任何其他服務名稱值都會導致網域名稱系統 (DNS) 伺服器的網域名稱系統查詢 DNS SRV 記錄。
必須提供 RemoteHostName 和 RemoteServiceName 屬性。 如果 RemoteHostName 為 Null 或 RemoteServiceName 為 Null 或空字串,則會發生錯誤。
如果傳入 endpointPair參數的EndpointPair物件包含 Null LocalHostName屬性,則系統會提供將使用的本機 IP 位址。 如果傳入 endpointPair參數的EndpointPair物件包含空的LocalServiceName屬性,則系統會提供將使用的本機 UDP 埠。
使用 DatagramSocket 將 UDP 資料包傳送至遠端網路目的地的方式有兩種:
- 使用其中一個 GetOutputStreamAsync 方法。
- 使用OutputStream屬性成功呼叫ConnectAsync方法之後。
GetOutputStreamAsync方法可讓應用程式使用DatagramSocket物件將 UDP 資料包傳送至多個網路目的地。 每次呼叫 GetOutputStreamAsync 方法時,應用程式都可以為 remoteHostName 和 remoteServiceName 參數設定不同的值。
若要從 DatagramSocket 物件上的單一遠端端點接收資料,應用程式必須將 MessageReceived 事件指派給事件處理常式,然後呼叫 ConnectAsync (EndPointPair) 方法,並將 endpointPair 參數設定為遠端端點資訊。 MessageReceived事件處理常式必須在任何系結或連接作業之前設定,否則會發生錯誤。
作業的一般順序如下:
- 建立 DatagramSocket。
- 使用 DatagramSocket 上的Control屬性來擷取DatagramSocketControl物件,並設定任何進階控制項。 大部分的應用程式通常不需要此步驟。
- 將 MessageReceived 事件指派給事件處理常式。
- 呼叫 ConnectAsync 方法以連線到遠端端點。
- 使用DatagramSocket上的OutputStream屬性搭配DataWriter物件,將訊息傳送至遠端端點。
- 每當遠端端點的訊息送達時,就會叫用 MessageReceived 事件處理常式。 當應用程式使用BindEndpointAsync或BindServiceNameAsync方法系結至本機服務名稱或 UDP 埠時,GetOutputStreamAsync方法也與 ConnectAsync 方法不同。 透過 GetOutputStreamAsync 方法,應用程式會從任何傳送至本機服務名稱或 UDP 埠的遠端目的地接收封包。 使用 ConnectAsync 方法時,應用程式只會從以參數的形式傳遞至 ConnectAsync 方法的遠端目的地接收封包。
在呼叫 ConnectAsync (EndPointPair) 方法之前 ,可以使用 BindServiceNameAsync (String、NetworkAdapter) 方法來指定網路介面卡。 指定的配接器用於系結作業。 如果在呼叫 BindServiceNameAsync (String、NetworkAdapter) 方法和傳遞至 ConnectAsync (EndPointPair 的 endpointPair 參數) 指定 LocalHostName,ConnectAsync (EndPointPair) 方法將會失敗。
ConnectAsync方法僅適用于單播 IP 位址。 嘗試使用endpointPair參數中設定之遠端 IP 位址中的多播 IP 位址呼叫ConnectAsync方法時,非同步作業將會完成並出現錯誤。 將錯誤傳遞至 SocketError.GetStatus 方法時,傳回的值會是 SocketErrorStatus.HostNotFound。
使用 ConnectAsync 搭配廣播 IP 位址,例如 255.255.255.255 將會連線,但只會透過找到的第一張網路介面卡廣播。 若要在所有可用的介面卡上廣播,請使用 GetOutputStreamAsync。
另請參閱
適用於
ConnectAsync(HostName, String)
啟動 DatagramSocket 上由 遠端主機名和遠端服務名稱所指定的遠端目的地的連線作業。
public:
virtual IAsyncAction ^ ConnectAsync(HostName ^ remoteHostName, Platform::String ^ remoteServiceName) = ConnectAsync;
/// [Windows.Foundation.Metadata.Overload("ConnectAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction ConnectAsync(HostName const& remoteHostName, winrt::hstring const& remoteServiceName);
[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 位址。
- remoteServiceName
-
String
Platform::String
winrt::hstring
遠端網路目的地的服務名稱或 UDP 埠。
傳回
DatagramSocket物件上的非同步連接作業。
- 屬性
Windows 需求
應用程式功能 |
ID_CAP_NETWORKING [Windows Phone]
internetClientServer
privateNetworkClientServer
|
備註
DatagramSocket上的ConnectAsync方法可用來定義遠端主機名或遠端 IP 位址,以及使用OutputStream屬性時,資料包將傳送的遠端服務名稱或 UDP 埠號碼。 這個方法也會限制將接受至 remoteHostName 參數之封包的遠端 IP 位址。 只有符合remoteHostName參數的傳入封包會觸發DatagramSocket上的MessageReceived事件。
應用程式稍後可以在DatagramSocket的OutputStream屬性上呼叫WriteAsync方法,或將OutputStream傳遞至DataWriter物件,以及呼叫DataWriter物件的方法,將網路資料傳送至遠端網路目的地。
remoteHostName參數可以包含遠端目的地的主機名稱或 IP 位址。 remoteServiceName參數可以包含遠端目的地的服務名稱或 UDP 埠。 如果 remoteHostName 參數包含主機名稱, ConnectAsync 方法會將遠端主機名解析為 IP 位址。 如果 remoteServiceName 參數包含服務名稱, ConnectAsync 方法會將遠端服務名稱解析為 UDP 埠號碼。
remoteServiceName參數預設辨識的服務名稱字串是本機電腦上%windir%\System32\drivers\etc\services檔案中列出的服務名稱。 任何其他服務名稱值都會導致網域名稱系統 (DNS) 伺服器的網域名稱系統查詢 DNS SRV 記錄。
必須提供 remoteHostName 和 remoteServiceName 參數。 如果 remoteHostName 為 null,或 remoteServiceName 為 Null 或空字串,則會發生錯誤。
使用 DatagramSocket 將 UDP 資料包傳送至遠端網路目的地的方式有兩種:
- 使用其中一個 GetOutputStreamAsync 方法。
- 成功呼叫 ConnectAsync 方法之後,請使用 OutputStream 屬性。
GetOutputStreamAsync方法可讓應用程式使用DatagramSocket物件將 UDP 資料包傳送至多個網路目的地。 每次呼叫 GetOutputStreamAsync 方法時,應用程式都可以為 remoteHostName 和 remoteServiceName 參數設定不同的值。
若要從DatagramSocket物件上的單一端點接收資料,應用程式必須將MessageReceived事件指派給事件處理常式,然後使用remoteHostName和remoteServiceName參數設定為遠端端點資訊呼叫ConnectAsync方法。 MessageReceived事件處理常式必須在任何系結或連接作業之前設定,否則會發生錯誤。
作業的一般順序如下:
- 建立 DatagramSocket。
- 使用 DatagramSocket 上的Control屬性來擷取DatagramSocketControl物件,並設定任何進階控制項。 大部分的應用程式通常不需要此步驟。
- 將 MessageReceived 事件指派給事件處理常式。
- 呼叫 ConnectAsync 方法以連線到遠端端點。
- 使用DatagramSocket上的OutputStream屬性搭配DataWriter物件,將訊息傳送至遠端端點。
- 每當遠端端點的訊息送達時,就會叫用 MessageReceived 事件處理常式。 當應用程式使用BindEndpointAsync或BindServiceNameAsync方法系結至本機服務名稱或 UDP 埠時,GetOutputStreamAsync方法也與ConnectAsync方法不同。 透過 GetOutputStreamAsync 方法,應用程式會從任何傳送至本機服務名稱或 UDP 埠的遠端目的地接收封包。 使用 ConnectAsync 方法時,應用程式只會從以參數的形式傳遞至 ConnectAsync 方法的遠端目的地接收封包。
ConnectAsync方法僅適用于單播 IP 位址。 嘗試使用remoteHostName參數的多播 IP 位址呼叫ConnectAsync方法時,非同步作業將會完成並出現錯誤。 將錯誤傳遞至 SocketError.GetStatus 方法時,傳回的值會是 SocketErrorStatus.HostNotFound。
使用 ConnectAsync 搭配廣播 IP 位址,例如 255.255.255.255 將會連線,但只會透過找到的第一張網路介面卡廣播。 若要在所有可用的介面卡上廣播,請使用 GetOutputStreamAsync。