Метод connect
- dynamic host,
- int port,
- {SecurityContext? context,
-
bool onBadCertificate(
- X509Certificate certificate
- void keyLog(
- String line
-
List<
String>? supportedProtocols, - Duration? timeout}
Создаёт новый защищённый клиентский сокет и подключает его к указанному хосту по указанному порту.
Возвращаемое значение Future завершается значением RawSecureSocket при подключении и готовности к подписке.
Сертификат, предоставленный сервером, проверяется с использованием надёжных сертификатов, установленных в объекте SecurityContext. Если на клиенте установлены сертификат и ключ, используя SecurityContext.useCertificateChain и SecurityContext.usePrivateKey, и сервер запрашивает клиентский сертификат, то этот клиентский сертификат отправляется на сервер.
onBadCertificate — это необязательный обработчик для непроверяемых сертификатов. Обработчик получает X509Certificate и может проверить его, принять решение (или позволить пользователю принять решение) о принятии подключения или нет. Обработчик должен вернуть true, чтобы продолжить RawSecureSocket подключение.
onBadCertificate — это необязательный обработчик для непроверяемых сертификатов. Обработчик получает X509Certificate и может проверить его, принять решение (или позволить пользователю принять решение) о принятии подключения или нет. Обработчик должен вернуть true, чтобы продолжить подключение SecureSocket.
keyLog — это необязательный обработчик, который вызывается при обмене новыми 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». Выбранный протокол можно получить через RawSecureSocket.selectedProtocol.
Реализация
static Future<RawSecureSocket> connect(host, int port,
{SecurityContext? context,
bool onBadCertificate(X509Certificate certificate)?,
void keyLog(String line)?,
List<String>? supportedProtocols,
Duration? timeout}) {
_RawSecureSocket._verifyFields(host, port, false, false);
return RawSocket.connect(host, port, timeout: timeout).then((socket) {
return secure(socket,
context: context,
onBadCertificate: onBadCertificate,
keyLog: keyLog,
supportedProtocols: supportedProtocols);
});
}
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-io/RawSecureSocket/connect.html