如何在Dart中找到未使用的TCP端口?

问题描述 投票:6回答:1

我正在尝试启动一个进程并告诉它使用未使用的TCP端口。不幸的是,我启动的二进制文件不会探测未使用的端口。有没有一个像样的方法来探测Dart中的端口,以便我可以将其用作我的进程的参数?

我能想到的最好的方法是创建一个端口为0的ServerSocket,然后关闭套接字并使用它的端口,但这对我来说似乎很烦人。

谁有更好的方法?

dart
1个回答
3
投票

我会添加“黑客”作为答案,因为我无法想到另一种方式,而且似乎工作得很好。

这是我的getUnusedPort()功能:

import 'dart:io';

Future<int> getUnusedPort(InternetAddress address) {
  return ServerSocket.bind(address ?? InternetAddress.anyIPv4, 0).then((socket) {
    var port = socket.port;
    socket.close();
    return port;
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.