bind静态方法

Future<ServerSocket> bind(
  1. dynamic address,
  2. int port,
  3. {int backlog = 0,
  4. bool v6Only = false,
  5. bool shared = false}
)

在指定的地址和端口上监听。

当返回的future完成后,服务器套接字将绑定到指定的addressport并开始在其上监听。

address可以是StringInternetAddress。如果addressString,则bind将执行InternetAddress.lookup并使用列表中的第一个值。要监听回环适配器,这将只允许从本地主机进入的连接,请使用值InternetAddress.loopbackIPv4InternetAddress.loopbackIPv6。若要允许从网络进入的连接,请使用值InternetAddress.anyIPv4InternetAddress.anyIPv6以绑定到所有接口或特定接口的IP地址。

如果使用IP版本6(IPv6)地址,则将接受IP版本6(IPv6)和版本4(IPv4)连接。若要将此限制为仅版本6(IPv6),请使用v6Only将版本设置为仅6。

如果port的值为0,系统将选择一个短暂的端口号。实际使用的端口号可以使用port属性获取。

可选参数backlog可以用来指定底层OS监听设置的监听队列。如果backlog的值为0(默认值),系统将选择一个合理的值。

可选参数shared指定是否可以有额外的ServerSocket对象绑定到相同的addressportv6Only组合。如果sharedtrue且来自此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);
}