статический метод connect
- dynamic host,
- int port,
- {SecurityContext? context,
-
bool onBadCertificate(
- X509Certificate certificate
- void keyLog(
- String line
-
List<
String>? supportedProtocols, - 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