私はXML-LibXSLTモジュールのメンテナーであり、テストの1つは存在しないURLにアクセスする必要があります。問題は、自分のシステムにURLが存在すると報告していたので、ウェブサービスがないと確信しているlocalhostにランダムなポートを割り当てることにしました。 Linux上で(予約ポートの値に)Perl:TCPポートを移植可能にする方法(利用できないURLがあるので)
# We reserve a random port to make sure the localhost address is not
# valid. See:
#
# https://rt.cpan.org/Ticket/Display.html?id=52422
my $sock = IO::Socket::INET->new(
Proto => 'tcp',
);
my $port = $sock->sockport();
$file = "http://localhost:${port}/allow.xml";
さて、問題は、$ポートが定義されていることで、有効な、それはWindows上で動作するようには表示されません - このバグを参照してください。これは、そのように行われていましたレポート - https://rt.cpan.org/Ticket/Display.html?id=71456。私の質問は、どのようにPerl 5のUNIX、Mac OS X、Windows上で移植可能な新しいポートを無期限に予約することができますか?
よろしく、
Shlomi魚
+1。 connect()は不要です。 – EJP
@EJP:実際には、少なくともINADDR_ANYバインドされたソケットでは、Windowsがポート割り当てにいくらか怠け者のアプローチをとっていることをかすかに覚えています。 – Hasturkun
ポートはbind()時間に割り当てられます。 – EJP