Všichni mají pravdu. Pokud jste však také zaneprázdněni testováním svého vlastního kódu aplikace může stále „vlastnit“ soket, pokud se spustí a zastaví relativně rychle. Zkuste SO_REUSEADDR jako možnost soketu:
Co přesně SO_REUSEADDR dělá?
Tato volba soketu říká jádru, že i když je tento port zaneprázdněn (ve stavu TIME_WAIT), pokračujte a znovu jej použijte. Pokud je zaneprázdněn, ale v jiném stavu, stále dostanete adresu, která je již v useerror. Je užitečné, pokud byl váš server vypnut a poté ihned restartován, zatímco jsou na jeho portu stále aktivní zásuvky. Měli byste si být vědomi toho, že pokud přijdou nějaká neočekávaná data, může to zmást váš server, ale i když je to možné, není to pravděpodobné.
Bylo zdůrazněno, že "Soket je 5-ti n-tice (proto, localaddr, místní port, vzdálená adr, vzdálený port). SO_REUSEADDR jen říká, že můžete znovu použít lokální adresy. 5-ti n-tice musí být stále jedinečné!" od Michaela Huntera ([email protected]). To je pravda, a proto je velmi nepravděpodobné, že váš server někdy uvidí neočekávaná data. Nebezpečí je v tom, že taková 5-ti n-tice stále poskakuje po síti, a zatímco poskakuje, nové připojení od stejného klienta na stejném systému náhodou získá stejný vzdálený port. To vysvětluje Richard Stevens v ,,2.7 Pleaseexplain the TIME_WAIT state.''.
Máte proces, který již tento port používá. netstat -tulpn
umožní najít ID procesu, který používá konkrétní port.