アプリケーションが実行される正確な種類の環境を予測できない場合は、気にしないでください。 1024 を超える任意の番号を選択し、構成可能にして、別のサービス/アプリケーションと競合した場合にユーザーが変更できるようにします。
もちろん、8080 (代替 HTTP) または 3128 (squid などのプロキシ)、1666 (perforce) などの非常に一般的なポートを回避することもできます。ここで既知のポートの包括的なリストを確認するか、/etc/services を参照してください。 .
ポート番号を気にせず、プログラムが実行されるたびに変更されることを気にしない場合は、リッスンする前にポートをバインドしないでください (または、バインドしたい場合はポート 0 でバインドします)。特定の IP アドレス)。どちらの場合も、空きポートを選択するよう OS に指示しています。
聞き始めたら、 getsockname
を使用します 選択されたポートを確認します。ファイルに書き込んで画面に表示し、 fork
を介して子に継承させることができます など
静的アプリケーションの場合は、/etc/services
をチェックすることを検討してください あなたが使用している他のものと衝突せず、他の場所では一般的に使用されていないポートを見つけるため.
$ tail /etc/services
nimspooler 48001/udp # Nimbus Spooler
nimhub 48002/tcp # Nimbus Hub
nimhub 48002/udp # Nimbus Hub
nimgtw 48003/tcp # Nimbus Gateway
nimgtw 48003/udp # Nimbus Gateway
com-bardac-dw 48556/tcp # com-bardac-dw
com-bardac-dw 48556/udp # com-bardac-dw
iqobject 48619/tcp # iqobject
iqobject 48619/udp # iqobject