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


Dart SecureSocket.secure用法及代碼示例

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

用法:

Future<SecureSocket> secure(
   Socket socket,    
   {dynamic host,    
   SecurityContext? context,    
   bool onBadCertificate(
   X509Certificate certificate   
)?,    
   void keyLog(
   String line   
)?,    
   @Since("2.6") List<String>? supportedProtocols}   
)

在現有連接上啟動 TLS。

獲取已連接的socket 並啟動客戶端 TLS 握手以確保通信安全。當返回的未來完成時,SecureSocket 已完成 TLS 握手。使用此函數需要連接的另一端為 TLS 握手做好準備。

如果socket 已經有訂閱,則此訂閱將不再接收和事件。在大多數情況下,在開始 TLS 握手之前在此訂閱上調用 StreamSubscription.pause 是正確的做法。

給定的socket 已關閉,可能不再使用。

如果傳遞了 host 參數,它將用作 TLS 握手的主機名。如果未傳遞host,則將使用來自socket 的主機名。 host 可以是 StringInternetAddress

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 獲得所選協議。

調用此函數將 not 導致 DNS 主機查找。如果傳遞的 hostString ,則生成的 SecureSocketInternetAddress 將傳入 host 作為其主機值,並將已連接套接字的 Internet 地址作為其地址值。

有關參數的更多信息,請參閱connect

相關用法


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