bind 静态方法
监听特定地址和端口。
当返回的 future 完成,服务器套接字就绑定到指定的 address
和 port
并开始监听。
address
可以是一个 String 或一个 InternetAddress。如果 address
是一个 String,bind 将执行 InternetAddress.lookup 并使用列表中的第一个值。要监听环回适配器,这将只允许来自本地主机的进来连接,使用值 InternetAddress.loopbackIPv4 或 InternetAddress.loopbackIPv6。要允许来自网络的内进连接,请使用 InternetAddress.anyIPv4 或 InternetAddress.anyIPv6 来绑定到所有接口或特定接口的 IP 地址。
如果 port
的值为 0
,则系统将选择一个短暂端口。实际使用的端口号可以通过 port
属性获取。
可选参数 backlog
可以用来指定底层的 OS 监听设置的监听队列大小。如果 backlog
的值为 0
(默认值)将选择一个合理的值。
将进入的客户端连接升级为安全连接,使用在 context
中设置的证书和密钥。
address
必须以数字地址的形式给出,而不是主机名。
要请求或要求客户端通过提供 SSL(TLS)客户端证书进行身份验证,请将可选参数 requestClientCertificate 或 requireClientCertificate 设置为 true。要求意味着请求,因此不需要指定两者。要检查是否收到了客户端证书,请检查连接后 SecureSocket-peerCertificate 的值。如果没有收到证书,则结果将为 null。
supportedProtocols
是一个可选的协议列表(按优先级递减顺序),用于与客户端进行 ALPN 协议协商。示例值是 "http/1.1" 或 "h2"。可以通过 RawSecureServerSocket.selectedProtocol 获取选择的协议。
可选参数 shared
指定其他 RawSecureServerSocket
对象是否可以绑定到同一个 address
、port
和 v6Only
组合。如果 shared
为 true
并且 isolate 或其他 isolate 中有更多 RawSecureServerSocket
绑定到该端口,则进入的连接将在所有已绑定的 RawSecureServerSocket
之间分配。可以通过这种方式在多个 isolate 中分配连接。
实现
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));
}