当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。