bind静态方法
在指定的地址和端口上监听。
当返回的future完成后,服务器套接字将绑定到指定的address
和port
并开始在其上监听。
address
可以是String或InternetAddress。如果address
是String,则bind
将执行InternetAddress.lookup并使用列表中的第一个值。要监听回环适配器,这将只允许从本地主机进入的连接,请使用值InternetAddress.loopbackIPv4或InternetAddress.loopbackIPv6。若要允许从网络进入的连接,请使用值InternetAddress.anyIPv4或InternetAddress.anyIPv6以绑定到所有接口或特定接口的IP地址。
如果使用IP版本6(IPv6)地址,则将接受IP版本6(IPv6)和版本4(IPv4)连接。若要将此限制为仅版本6(IPv6),请使用v6Only
将版本设置为仅6。
如果port
的值为0
,系统将选择一个短暂的端口号。实际使用的端口号可以使用port
属性获取。
可选参数backlog
可以用来指定底层OS监听设置的监听队列。如果backlog
的值为0
(默认值),系统将选择一个合理的值。
可选参数shared
指定是否可以有额外的ServerSocket对象绑定到相同的address
、port
和v6Only
组合。如果shared
为true
且来自此isolate或其他isolate的更多的服务器套接字已绑定到端口,则传入的连接将分布到所有已绑定的服务器套接字中。可以通过这种方式在多个isolate之间分配连接。
实现
static Future<ServerSocket> bind(address, int port,
{int backlog = 0, bool v6Only = false, bool shared = false}) {
final IOOverrides? overrides = IOOverrides.current;
if (overrides == null) {
return ServerSocket._bind(address, port,
backlog: backlog, v6Only: v6Only, shared: shared);
}
return overrides.serverSocketBind(address, port,
backlog: backlog, v6Only: v6Only, shared: shared);
}