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

Posted

技术标签:

【中文标题】找出异步套接字绑定的端口?【英文标题】:Finding out the port an asynchronous socket is binding to? 【发布时间】:2019-03-03 08:02:41 【问题描述】:

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

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

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

【问题讨论】:

你是指版本 6.d 吗? 【参考方案1】:

当您 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;

【讨论】:

以上是关于找出异步套接字绑定的端口?的主要内容,如果未能解决你的问题,请参考以下文章

找出zerorpc服务器的绑定端口

绑定时 C# 异步 SocketException

Linux网络编程——端口复用(多个套接字绑定同一个端口)

在 PHP 中打开异步套接字

套接字 的端口重用 作用 是啥??

在将套接字与端点绑定之前如何找到可用端口?