找出异步套接字绑定到的端口?

Finding out the port an asynchronous socket is binding to?

从 Perl 6 版本 6.d 开始,您可以使用端口 0 让解释器为您找到一个端口绑定:

my $socket = IO::Socket::Async.listen($SOCKET_ADDR, 0);

但是,$socket 是一个 Supply,没有关于它所使用的低级套接字的信息。绑定到哪个端口的方法是什么?

当您 tap $socket 变量时,您会得到一个(当前未记录IO::Socket::Async::ListenSocket 对象。这有几个方法 socket-portsocket-hostPromises 然后当它们解析时具有正确的值。

我们或许可以整理文档以表明这一点。

示例:

my $s = IO::Socket::Async.listen("127.0.0.1",0);
my $t = $s.tap;
my $p = await $t.socket-port;
$p.say;