статический метод bind
Прослушивает указанные адрес и порт.
Когда возвращённый future завершается, сокет сервера привязывается к указанным address и port и начинает их прослушивать.
Значением address может быть String или InternetAddress. Если address — это String, bind выполнит поиск с помощью InternetAddress.lookup и использует первое значение из списка. Чтобы прослушивать loopback-интерфейс, который разрешает только входящие подключения с локального хоста, используйте значение 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". Выбранный протокол можно получить с помощью RawSecureSocket.selectedProtocol.
Необязательный аргумент shared указывает, могут ли дополнительные объекты RawSecureServerSocket привязываться к той же комбинации address, port и v6Only. Если shared имеет значение true и к порту привязаны дополнительные объекты RawSecureServerSocket из этого или других изолятов, входящие подключения будут распределяться между всеми привязанными объектами RawSecureServerSocket. Таким образом подключения можно распределять между несколькими изолятами.
Реализация
static Future<RawSecureServerSocket> 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 RawServerSocket.bind(address, port,
backlog: backlog, v6Only: v6Only, shared: shared)
.then((serverSocket) => new RawSecureServerSocket._(
serverSocket,
context,
requestClientCertificate,
requireClientCertificate,
supportedProtocols));
}
© 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/RawSecureServerSocket/bind.html