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"。所选协议可以通过 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));
}