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"。可以使用 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));
}