Pokud nemůžete předvídat přesný druh prostředí, ve kterém vaše aplikace poběží, jednoduše se tím nezatěžujte. Vyberte libovolné číslo nad 1024 a také jej udělejte konfigurovatelné, aby jej uživatel mohl změnit v případě konfliktu s jinou službou/aplikací.
Samozřejmě se stále můžete vyhnout velmi běžným portům jako 8080 (alternativní HTTP) nebo 3128 (proxy jako squid), 1666 (perforce) atd. Zde si můžete prohlédnout úplný seznam známých portů nebo se podívat na /etc/services .
Pokud vás nezajímá číslo portu a nevadí vám, že se mění při každém spuštění vašeho programu, jednoduše port nesvazujte, než na něm nasloucháte (nebo se svažte s portem 0, chcete-li svázat konkrétní IP adresa). V obou případech říkáte OS, aby pro vás vybral volný port.
Až začnete poslouchat, použijte getsockname
zjistit, který port byl vybrán. Můžete jej zapsat do souboru, zobrazit na obrazovce, nechat jej zdědit dítě pomocí fork
, atd.
U statické aplikace zvažte zaškrtnutí /etc/services
najít port, který nebude kolidovat s ničím jiným, co používáte, a který se jinde běžně nepoužívá.
$ 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