當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Dart SecureSocket.connect用法及代碼示例

dart:io 庫中SecureSocket.connect 方法的用法介紹如下。

用法:

Future<SecureSocket> connect(
   dynamic host,    
   int port,    
   {SecurityContext? context,    
   bool onBadCertificate(
   X509Certificate certificate   
)?,    
   void keyLog(
   String line   
)?,    
   List<String>? supportedProtocols,    
   Duration? timeout}   
)
      override

構造一個新的安全客戶端套接字並將其連接到端口 port 上的給定 host

返回的 Future 將以 SecureSocket 完成,該 SecureSocket 已連接並準備好訂閱。

使用SecurityContext 對象中設置的可信證書檢查服務器提供的證書。默認的SecurityContext 對象包含一組內置的用於知名證書頒發機構的受信任根證書。

onBadCertificate 是不可驗證證書的可選處理程序。處理程序接收到 X509Certificate ,並且可以檢查它並決定(或讓用戶決定)是否接受連接。處理程序應返回 true 以繼續 SecureSocket 連接。

keyLog 是一個可選回調,當與服務器交換新的 TLS key 時將調用該回調。每次調用keyLog 將在NSS Key Log Format 中接收一行文本。將這些行寫入文件將允許工具(例如 Wireshark )解密通過此套接字發送的內容。這意味著允許network-level 調試安全套接字,不應在生產代碼中使用。例如:

final log = File('keylog.txt');
final socket = await SecureSocket.connect('www.example.com', 443,
    keyLog: (line) => log.writeAsStringSync(line, mode: FileMode.append));

supportedProtocols 是在與服務器進行 ALPN 協議協商期間使用的可選協議列表(按優先級降序排列)。示例值為 "http/1.1" 或 "h2"。可以通過 SecureSocket.selectedProtocol 獲得所選協議。

參數timeout 用於指定等待建立連接的最大允許時間。如果 timeout 長於係統級超時持續時間,則超時可能會比 timeout 中指定的時間更早發生。超時時,會拋出 SocketException 並取消所有正在進行的與 host 的連接嘗試。

相關用法


注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 connect method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。