Spec-Zone.ru › Dart 2

dart:io

статический метод connect

Future<SecureSocket> connect(
  1. dynamic host,
  2. int port,
  3. {SecurityContext? context,
  4. bool onBadCertificate(
    1. X509Certificate certificate
    )?,
  5. void keyLog(
    1. String line
    )?,
  6. List<String>? supportedProtocols,
  7. Duration? timeout}
)
переопределение

Создаёт новый защищённый клиентский сокет и подключает его к указанному host на порту port.

Возвращённый Future завершится объектом SecureSocket, который подключён и готов к подписке.

Сертификат, предоставленный сервером, проверяется с использованием доверенных сертификатов, заданных в объекте SecurityContext. Объект SecurityContext по умолчанию содержит встроенный набор доверенных корневых сертификатов известных центров сертификации.

onBadCertificate — необязательный обработчик непроверяемых сертификатов. Обработчик получает X509Certificate и может проверить его и решить (или предоставить пользователю возможность решить), принимать соединение или нет. Обработчик должен вернуть true, чтобы продолжить SecureSocket соединение.

keyLog — необязательный callback, который будет вызван при обмене новыми ключами TLS с сервером. keyLog будет получать одну строку текста в формате NSS Key Log Format при каждом вызове. Запись этих строк в файл позволит инструментам (например, Wireshark) расшифровывать данные, отправленные через этот сокет. Эта возможность предназначена для отладки защищённых сокетов на сетевом уровне и не должна использоваться в производственном коде. Например:

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 отменяются.

Реализация

static Future<SecureSocket> connect(host, int port,
    {SecurityContext? context,
    bool onBadCertificate(X509Certificate certificate)?,
    void keyLog(String line)?,
    List<String>? supportedProtocols,
    Duration? timeout}) {
  return RawSecureSocket.connect(host, port,
          context: context,
          onBadCertificate: onBadCertificate,
          keyLog: keyLog,
          supportedProtocols: supportedProtocols,
          timeout: timeout)
      .then((rawSocket) => new SecureSocket._(rawSocket));
}

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-io/SecureSocket/connect.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API