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));
}