Dochází k TIME_WAIT
stav připojených zásuvek. I když jste zavřeli zásuvku, stále to má několik minut přetrvávající následky. Důvody tohoto stavu, stejně jako příznak soketu, který můžete nastavit, abyste chování zakázali (SO_REUSEADDR), jsou vysvětleny v příručce UNIX soket FAQ.
Zkrátka
server = socket.socket()
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(...)
...
Zkuste přidat import sys a ukončit aplikaci pomocí sys.exit(). Soket zůstane rezervován, dokud se systém neujistí, že je aplikace uzavřena. Můžete to být explicitní pomocí sys.exit()
[edit] Oh, dobře. Sám jsem v zásuvkách docela nový. Takže říkáte, že tato sekvence není bezpečná? Nedovedu si představit jiný způsob, jak to udělat. V určitém okamžiku musíte aplikaci zavřít pomocí určité techniky, že? Jak se to tedy správně dělá?
server.shutdown(socket.SHUT_RDWR)
server.close()
sys.exit()
Jak mohu zrcadlit adresář pomocí wget bez vytváření nadřazených adresářů?
Jak mohu omezit počet výsledků vrácených z grep?