首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Dart中找到未使用的TCP端口?

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

Stack Overflow用户
提问于 2012-12-31 02:59:36
回答 2查看 615关注 0票数 6

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

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

谁有更好的办法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-31 07:46:59

我会添加我的“hack”作为答案,因为我想不出另一种方法,而且它似乎工作得很好。

下面是我的getUnusedPort()函数:

代码语言:javascript
复制
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;
  });
}
票数 4
EN

Stack Overflow用户

发布于 2020-05-29 07:30:17

由于一旦套接字关闭,另一个进程就可以回收该端口,因此上述操作非常有效。在https://chromium.googlesource.com/external/github.com/dart-lang/test/+/master/pkgs/test_core/lib/src/util/io.dart#147中使用模式

代码语言:javascript
复制
Future<T> getUnusedPort<T>(FutureOr<T> Function(int port) tryPort) async {
  T value;
  await Future.doWhile(() async {
    value = await tryPort(await getUnsafeUnusedPort());
    return value == null;
  });
  return value;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14093628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档