Spec-Zone.ru › Dart 2

dart:io

Метод bind

Future<SecureServerSocket> bind(
  1. dynamic address,
  2. int port,
  3. SecurityContext? context,
  4. {int backlog = 0,
  5. bool v6Only = false,
  6. bool requestClientCertificate = false,
  7. bool requireClientCertificate = false,
  8. List<String>? supportedProtocols,
  9. bool shared = false}
)

Прослушивает заданный адрес и порт.

Когда возвращённое будущее завершается, сокет сервера привязывается к заданному address и port и начинает прослушивание на нём.

address может быть либо строкой, либо InternetAddress. Если address является строкой, bind выполнит InternetAddress.lookup и использует первое значение в списке. Для прослушивания на адаптере обратной связи, который позволит только входящие подключения с локального хоста, используйте значение InternetAddress.loopbackIPv4 или InternetAddress.loopbackIPv6. Чтобы разрешить входящие подключения из сети, используйте одно из значений InternetAddress.anyIPv4 или InternetAddress.anyIPv6 для привязки ко всем интерфейсам или IP-адресу определённого интерфейса.

Если port имеет значение 0, система выберет эфемерный порт. Фактический используемый порт можно получить, используя port геттер.

Дополнительный аргумент backlog может использоваться для указания очереди ожидания прослушивания для подсистемы прослушивания операционной системы. Если backlog имеет значение 0 (по умолчанию), система выберет разумное значение.

Входящие подключения клиентов преобразуются в защищённые соединения, используя сертификат сервера и ключ, установленные в context.

address должен быть задан как числовой адрес, а не имя хоста.

Чтобы запросить или потребовать, чтобы клиенты авторизовались, предоставив SSL (TLS) клиентский сертификат, установите необязательный параметр requestClientCertificate или requireClientCertificate в значение true. Требование сертификата подразумевает запрос сертификата, поэтому установка обоих значений избыточно. Чтобы проверить, был ли получен клиентский сертификат, проверьте SecureSocket.peerCertificate после подключения. Если сертификат не был получен, результат будет null.

supportedProtocols — это необязательный список протоколов (в порядке убывания предпочтения), которые необходимо использовать во время переговоров о протоколе ALPN с клиентами. Пример значения: "http/1.1" или "h2". Выбранный протокол можно получить с помощью SecureSocket.selectedProtocol.

Необязательный аргумент shared указывает, могут ли дополнительные SecureServerSocket объекты привязаться к той же комбинации address, port и v6Only. Если shared имеет значение true, и более SecureServerSocket из этого изолированного выполнения или других изолированных выполнений привязаны к одному и тому же порту, то входящие подключения будут распределены среди всех привязанных SecureServerSocket. Подключения могут быть распределены по нескольким изолированным выполнениям таким образом.

Реализация

static Future<SecureServerSocket> bind(
    address, int port, SecurityContext? context,
    {int backlog = 0,
    bool v6Only = false,
    bool requestClientCertificate = false,
    bool requireClientCertificate = false,
    List<String>? supportedProtocols,
    bool shared = false}) {
  return RawSecureServerSocket.bind(address, port, context,
          backlog: backlog,
          v6Only: v6Only,
          requestClientCertificate: requestClientCertificate,
          requireClientCertificate: requireClientCertificate,
          supportedProtocols: supportedProtocols,
          shared: shared)
      .then((serverSocket) => new SecureServerSocket._(serverSocket));
}

© 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/SecureServerSocket/bind.html

Spec-Zone.ru

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