StreamSocket.ConnectAsync 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| ConnectAsync(EndpointPair) |
在 StreamSocket 物件上啟動非同步操作,連接指定為 EndpointPair 物件的遠端網路目的地。 |
| ConnectAsync(EndpointPair, SocketProtectionLevel) |
在 StreamSocket 物件上啟動非同步操作,連接以 EndpointPair 物件及 SocketProtectionLevel 列舉指定的遠端網路目的地。 此方法無法從 JavaScript 呼叫。 |
| ConnectAsync(HostName, String) |
在 StreamSocket 物件上啟動非同步操作,連接由遠端主機名稱與遠端服務名稱指定的遠端網路目的地。 |
| ConnectAsync(HostName, String, SocketProtectionLevel) |
在 StreamSocket 物件上啟動非同步操作,連接由遠端主機名稱、遠端服務名稱及 SocketProtectionLevel 指定的遠端目的地。 |
| ConnectAsync(HostName, String, SocketProtectionLevel, NetworkAdapter) |
在指定的本地網路介面卡上的 StreamSocket 物件上啟動非同步操作,以連接由遠端主機名稱、遠端服務名稱及 SocketProtectionLevel 指定的遠端目的地。 |
ConnectAsync(EndpointPair)
在 StreamSocket 物件上啟動非同步操作,連接指定為 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 位址、本地服務名稱或 TCP 埠、遠端主機名稱或遠端 IP 位址,以及遠端服務名稱或遠端 TCP 埠,用於遠端網路目的地。
傳回
一個對 StreamSocket 物件進行非同步連接操作。
- 屬性
Windows 需求
| 規格需求 | Description |
|---|---|
| 應用程式功能 |
internetClientServer
privateNetworkClientServer
|
備註
如果 endpointPair 參數中傳入的 EndpointPair 物件包含 LocalHostName 屬性的 null,則系統會提供將使用的本地 IP 位址。 如果 endpointPair 參數中傳遞的 EndpointPair 物件包含 LocalServiceName 屬性的空字串,系統會提供將使用的本地 TCP 埠。
在 UWP 應用程式中, StreamSocket 類別支援在需要代理完成連線時連接到遠端端點。 這種對代理的支援對應用程式來說是自動且透明的。 當指定本地主機位址時,不支援透過代理連線,因此 endpointPair 參數中傳遞的 LocalHostName 屬性必須為空。 欲了解更多詳細資訊,請參閱 StreamSocket 類別參考中關於代理支援的備註。
另請參閱
- ConnectAsync(HostName, String)
- ConnectAsync(EndpointPair, SocketProtectionLevel)
- ConnectAsync(HostName, String, SocketProtectionLevel)
- ConnectAsync(HostName, String, SocketProtectionLevel, NetworkAdapter)
- EndpointPair
- 如何設定套接字操作的逾時
- 如何設定套接字操作的逾時
適用於
ConnectAsync(EndpointPair, SocketProtectionLevel)
在 StreamSocket 物件上啟動非同步操作,連接以 EndpointPair 物件及 SocketProtectionLevel 列舉指定的遠端網路目的地。 此方法無法從 JavaScript 呼叫。
public:
virtual IAsyncAction ^ ConnectAsync(EndpointPair ^ endpointPair, SocketProtectionLevel protectionLevel) = ConnectAsync;
/// [Windows.Foundation.Metadata.Overload("ConnectWithEndpointPairAndProtectionLevelAsync")]
IAsyncAction ConnectAsync(EndpointPair const& endpointPair, SocketProtectionLevel const& protectionLevel);
[Windows.Foundation.Metadata.Overload("ConnectWithEndpointPairAndProtectionLevelAsync")]
public IAsyncAction ConnectAsync(EndpointPair endpointPair, SocketProtectionLevel protectionLevel);
function connectAsync(endpointPair, protectionLevel)
Public Function ConnectAsync (endpointPair As EndpointPair, protectionLevel As SocketProtectionLevel) As IAsyncAction
參數
- endpointPair
- EndpointPair
一個 EndpointPair 物件,指定本地主機名稱或 IP 位址、本地服務名稱或 TCP 埠、遠端主機名稱或遠端 IP 位址,以及遠端服務名稱或遠端 TCP 埠,用於遠端網路目的地。
- protectionLevel
- SocketProtectionLevel
代表 StreamSocket 物件完整性與加密的保護層級。
傳回
一個對 StreamSocket 物件進行非同步連接操作。
- 屬性
Windows 需求
| 規格需求 | Description |
|---|---|
| 應用程式功能 |
internetClientServer
privateNetworkClientServer
|
備註
如果 endpointPair 參數中傳入的 EndpointPair 物件包含 LocalHostName 屬性的 null,則系統會提供將使用的本地 IP 位址。 如果 endpointPair 參數中傳遞的 EndpointPair 物件包含 LocalServiceName 屬性的空字串,系統會提供將使用的本地 TCP 埠。
如果 endpointPair 參數中傳遞的 EndpointPair 物件在 LocalServiceName 屬性中包含 null,則會發生錯誤。
JavaScript 中並未公開 [ConnectAsync(EndpointPair, SocketProtectionLevel) 方法。 此方法無法從 JavaScript 呼叫,因為它的參數數與 ConnectAsync(HostName, String) 方法相同。
用 JavaScript 撰寫的應用程式無法直接使用 SSL 連接 StreamSocket 的 端點對 。 為了使用 SSL 連接 端點對 ,JavaScript 應用程式可以使用以下程式碼。
var clientSocket = new Windows.Networking.Sockets.StreamSocket();
var remoteName = new Windows.Networking.HostName("www.contoso.com");
var myEndpointPair = EndpointPair();
// Set properties needed on the EndpointPair
// We only set remote properties and the localServiceName,
// But the localHostName could also be set
myEndpointPair.localServiceName = "12345";
myEndpointPair.remoteHostName = remoteName;
myEndpointPair.remoteServiceName = "http";
// First connect the socket without SSL
clientSocket.connectAsync(myEendpointPair>).then(function () {
// Now upgrade the connection to SSL
clientSocket.upgradeToSslAsync(SocketProtectionLevel.Ssl).then(function () {
// now connected using SSL
}
}
當 protectionLevel 參數設定為需要 SSL 或 TLS 的值時,若遠端端點不支援 SSL 或 TLS,socket connect 操作可能不會逾時。 若初始連線操作成功,但遠端端點在 SSL 握手期間未終止連線,則可能發生此情況。 為了防範這種情況,應用程式在請求 SSL/TLS 時應該設定連線操作的逾時,逾時過時則中止該操作。 欲了解更多關於使用 JavaScript 設定套接字操作逾時的資訊,請參閱 《如何設定套接字操作的逾時 。 欲了解更多使用 VB、C# 或 C++ 設定套接字操作逾時的資訊,請參閱 《如何設定套接字操作的逾時 。
在 UWP 應用程式中, StreamSocket 類別支援在需要代理完成連線時連接到遠端端點。 這種對代理的支援對應用程式來說是自動且透明的。 當指定本地主機位址時,不支援透過代理連線,因此 endpointPair 參數中傳遞的 LocalHostName 屬性必須為空。 欲了解更多詳細資訊,請參閱 StreamSocket 類別參考中關於代理支援的備註。
另請參閱
- ConnectAsync(EndpointPair)
- ConnectAsync(HostName, String)
- ConnectAsync(HostName, String, SocketProtectionLevel)
- ConnectAsync(HostName, String, SocketProtectionLevel, NetworkAdapter)
- EndpointPair
- SocketProtectionLevel
- 如何設定套接字操作的逾時
- 如何設定套接字操作的逾時
適用於
ConnectAsync(HostName, String)
在 StreamSocket 物件上啟動非同步操作,連接由遠端主機名稱與遠端服務名稱指定的遠端網路目的地。
public:
virtual IAsyncAction ^ ConnectAsync(HostName ^ remoteHostName, Platform::String ^ remoteServiceName) = ConnectAsync;
/// [Windows.Foundation.Metadata.DefaultOverload]
/// [Windows.Foundation.Metadata.Overload("ConnectAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction ConnectAsync(HostName const& remoteHostName, winrt::hstring const& remoteServiceName);
[Windows.Foundation.Metadata.DefaultOverload]
[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 位址。 藍牙 RFCOMM 則是 MAC 位址。
- remoteServiceName
-
String
Platform::String
winrt::hstring
遠端網路目的地的服務名稱或 TCP 埠號。 藍牙 RFCOMM 的 Bluetooth 位址。
傳回
一個對 StreamSocket 物件進行非同步連接操作。
- 屬性
Windows 需求
| 規格需求 | Description |
|---|---|
| 應用程式功能 |
internetClientServer
privateNetworkClientServer
|
備註
必須提供 remoteHostName 與 remoteServiceName 參數。 若 remoteHostName 為空、 remoteServiceName 為空或字串為空,則會發生錯誤。
在 UWP 應用程式中, StreamSocket 類別支援在需要代理完成連線時連接到遠端端點。 這種對代理的支援對應用程式來說是自動且透明的。 欲了解更多詳細資訊,請參閱 StreamSocket 類別參考中關於代理支援的備註。
另請參閱
- ConnectAsync(EndpointPair)
- ConnectAsync(EndpointPair, SocketProtectionLevel)
- ConnectAsync(HostName, String, SocketProtectionLevel)
- ConnectAsync(HostName, String, SocketProtectionLevel, NetworkAdapter)
- HostName
- 如何設定套接字操作的逾時
- 如何設定套接字操作的逾時
適用於
ConnectAsync(HostName, String, SocketProtectionLevel)
在 StreamSocket 物件上啟動非同步操作,連接由遠端主機名稱、遠端服務名稱及 SocketProtectionLevel 指定的遠端目的地。
public:
virtual IAsyncAction ^ ConnectAsync(HostName ^ remoteHostName, Platform::String ^ remoteServiceName, SocketProtectionLevel protectionLevel) = ConnectAsync;
/// [Windows.Foundation.Metadata.Overload("ConnectWithProtectionLevelAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction ConnectAsync(HostName const& remoteHostName, winrt::hstring const& remoteServiceName, SocketProtectionLevel const& protectionLevel);
[Windows.Foundation.Metadata.Overload("ConnectWithProtectionLevelAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncAction ConnectAsync(HostName remoteHostName, string remoteServiceName, SocketProtectionLevel protectionLevel);
function connectAsync(remoteHostName, remoteServiceName, protectionLevel)
Public Function ConnectAsync (remoteHostName As HostName, remoteServiceName As String, protectionLevel As SocketProtectionLevel) As IAsyncAction
參數
- remoteHostName
- HostName
遠端網路目的地的主機名稱或 IP 位址。 藍牙 RFCOMM 則是 MAC 位址。
- remoteServiceName
-
String
Platform::String
winrt::hstring
遠端網路目的地的服務名稱或 TCP 埠號。 藍牙 RFCOMM 的 Bluetooth 位址。
- protectionLevel
- SocketProtectionLevel
代表 StreamSocket 物件完整性與加密的保護層級。
傳回
一個對 StreamSocket 物件進行非同步連接操作。
- 屬性
Windows 需求
| 規格需求 | Description |
|---|---|
| 應用程式功能 |
internetClientServer
privateNetworkClientServer
|
備註
必須提供 remoteHostName 與 remoteServiceName 參數。 若 remoteHostName 為空、 remoteServiceName 為空或字串為空,則會發生錯誤。
當 protectionLevel 參數設定為需要 SSL 或 TLS 的值時,若遠端網路目的地不支援 SSL 或 TLS,socket connect 操作可能不會逾時。 若初始連線操作成功,但遠端主機在 SSL 握手期間未終止連線,則可能發生這種情況。 為了防範這種情況,應用程式在請求 SSL/TLS 時應該設定連線操作的逾時,逾時過時則中止該操作。 欲了解更多關於使用 JavaScript 設定套接字操作逾時的資訊,請參閱 《如何設定套接字操作的逾時 。 欲了解更多使用 VB、C# 或 C++ 設定套接字操作逾時的資訊,請參閱 《如何設定套接字操作的逾時 。
在 UWP 應用程式中, StreamSocket 類別支援在需要代理完成連線時連接到遠端端點。 這種對代理的支援對應用程式來說是自動且透明的。 欲了解更多詳細資訊,請參閱 StreamSocket 類別參考中關於代理支援的備註。
另請參閱
- ConnectAsync(EndpointPair)
- ConnectAsync(HostName, String)
- ConnectAsync(EndpointPair, SocketProtectionLevel)
- ConnectAsync(HostName, String, SocketProtectionLevel, NetworkAdapter)
- HostName
- SocketProtectionLevel
- 如何設定套接字操作的逾時
- 如何設定套接字操作的逾時
適用於
ConnectAsync(HostName, String, SocketProtectionLevel, NetworkAdapter)
在指定的本地網路介面卡上的 StreamSocket 物件上啟動非同步操作,以連接由遠端主機名稱、遠端服務名稱及 SocketProtectionLevel 指定的遠端目的地。
public:
virtual IAsyncAction ^ ConnectAsync(HostName ^ remoteHostName, Platform::String ^ remoteServiceName, SocketProtectionLevel protectionLevel, NetworkAdapter ^ adapter) = ConnectAsync;
/// [Windows.Foundation.Metadata.Overload("ConnectWithProtectionLevelAndAdapterAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction ConnectAsync(HostName const& remoteHostName, winrt::hstring const& remoteServiceName, SocketProtectionLevel const& protectionLevel, NetworkAdapter const& adapter);
[Windows.Foundation.Metadata.Overload("ConnectWithProtectionLevelAndAdapterAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncAction ConnectAsync(HostName remoteHostName, string remoteServiceName, SocketProtectionLevel protectionLevel, NetworkAdapter adapter);
function connectAsync(remoteHostName, remoteServiceName, protectionLevel, adapter)
Public Function ConnectAsync (remoteHostName As HostName, remoteServiceName As String, protectionLevel As SocketProtectionLevel, adapter As NetworkAdapter) As IAsyncAction
參數
- remoteHostName
- HostName
遠端網路目的地的主機名稱或 IP 位址。 藍牙 RFCOMM 則是 MAC 位址。
- remoteServiceName
-
String
Platform::String
winrt::hstring
遠端網路目的地的服務名稱或 TCP 埠號。 藍牙 RFCOMM 的 Bluetooth 位址。
- protectionLevel
- SocketProtectionLevel
代表 StreamSocket 物件完整性與加密的保護層級。
- adapter
- NetworkAdapter
用於 StreamSocket 物件連接操作的本地網路介面卡。
傳回
一個對 StreamSocket 物件進行非同步連接操作。
- 屬性
備註
[ConnectAsync(Hostname, String, SocketProtectionLevel, NetworkAdapter) 方法綁定於本地電腦介面 卡 參數中指定的網路介面,遠端主機名稱與服務名稱則在 remoteHostName 與 remoteServiceName 參數中指定,保護層級則由 protectionLevel 參數指定。
必須提供 remoteHostName 與 remoteServiceName 參數。 若 remoteHostName 為 空 、 remoteServiceName 為 空 或字串為空,則會發生錯誤。 若 適配器 參數為 空,則會發生錯誤。
[ConnectAsync(Hostname, String, SocketProtectionLevel, NetworkAdapter) 方法所使用的名稱解析機制,僅限於網域名稱系統(DNS)命名空間指定的介面。
使用指定的網路卡則是盡力而為。 若系統將介面卡設定為弱主機或轉發模式,則可使用非指定介面卡的介面卡。
當 protectionLevel 參數設定為需要 SSL 或 TLS 的值時,若遠端網路目的地不支援 SSL 或 TLS,socket connect 操作可能不會逾時。 若初始連線操作成功,但遠端主機在 SSL 握手期間未終止連線,則可能發生這種情況。 為了防範這種情況,應用程式在請求 SSL/TLS 時應該設定連線操作的逾時,逾時過時則中止該操作。 欲了解更多關於使用 JavaScript 設定套接字操作逾時的資訊,請參閱 《如何設定套接字操作的逾時 。 欲了解更多使用 VB、C# 或 C++ 設定套接字操作逾時的資訊,請參閱 《如何設定套接字操作的逾時 。
應用程式可以透過檢查 HostName 實例(例如 NetworkInformation.GetHostNames 方法)並從 Hostname.IPInformation 屬性取得 IPInformation 物件,來取得有效的 NetworkAdapter。 IPInformation.NetworkAdapter 屬性可用來擷取相關的 NetworkAdapter。
在 UWP 應用程式中, StreamSocket 類別支援在需要代理完成連線時連接到遠端端點。 這種對代理的支援對應用程式來說是自動且透明的。 然而,當選擇特定網路卡時,並不支援透過代理連線。 因此,當使用 [ConnectAsync(HostName, String, SocketProtectionLevel, NetworkAdapter) 方法時,代理支援會被停用。 欲了解更多詳細資訊,請參閱 StreamSocket 類別參考中關於代理支援的備註。
另請參閱
- ConnectAsync(EndpointPair)
- ConnectAsync(HostName, String)
- ConnectAsync(EndpointPair, SocketProtectionLevel)
- ConnectAsync(HostName, String, SocketProtectionLevel)
- IPInformation
- NetworkAdapter
- 如何設定套接字操作的逾時
- 如何設定套接字操作的逾時