bind 静态方法
监听指定地址和端口。
当返回的future完成时,服务器套接字将绑定到指定的 address
和 port
并开始监听。
address
可以是一个 String 或一个 InternetAddress。如果 address
是一个 String,bind 将执行 InternetAddress.lookup 并使用列表中的第一个值。要监听回环适配器,这将仅允许来自本地主机的传入连接,请使用值 InternetAddress.loopbackIPv4 或 InternetAddress.loopbackIPv6。要允许来自网络的传入连接,请使用值 InternetAddress.anyIPv4 或 InternetAddress.anyIPv6 来绑定到所有接口或特定接口的IP地址。
如果 port
的值为 0
,系统将选择一个短暂的端口号。实际使用的端口号可以通过 port
getter 获取。
可选参数 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));
}