Seite 1 von 1

Socket "richtig" beenden

Verfasst: Montag 18. September 2006, 22:28
von JanDMC
Hi Leute,

Ich hab folgendes Problem: Ich habe ein Tool wo der user entscheiden kann ob der "server" gestartet oder beenden werden soll und möglicherweise zu einem anderen mal neugestartet wird.

Der " Server"

Code: Alles auswählen

self.mysocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.mysocket.bind(('192.168.178.23', 5800))
self.mysocket.listen(1)

jetzt möchte ich das ganze "komplett" schließen. Ich haben schon mysocket.close() und mysocket.shutdown() versucht. Bei close wird es nicht ganz geschlossen denn sobald ich ihn wieder starten will auf dem selben port , ist der port noch in gebrauch.
hat jemand eine antwort vll?

Verfasst: Dienstag 19. September 2006, 05:37
von Brok3r
Der Aufruf der Methode close(), also in deinem Fall mysocket.close() sollte den Socket korrekt schliessen.
Zum testen einfach mal

Code: Alles auswählen

self.mysocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.mysocket.bind(('192.168.178.23', 5800))
self.mysocket.listen(1)
self.mysocket.close()
ausführen.

Re: Socket "richtig" beenden

Verfasst: Dienstag 19. September 2006, 09:13
von BlackJack
JanDMC hat geschrieben:jetzt möchte ich das ganze "komplett" schließen. Ich haben schon mysocket.close() und mysocket.shutdown() versucht. Bei close wird es nicht ganz geschlossen denn sobald ich ihn wieder starten will auf dem selben port , ist der port noch in gebrauch.
hat jemand eine antwort vll?
Das Betriebssystem gibt Sockets nicht sofort wieder frei auch wenn sie geschlossen sind. Das kann man meistens mit einer Option abschalten:

Code: Alles auswählen

self.mysocket.setsockopt(socket.SOL_SOCKET,
                         socket.SO_REUSEADDR,
                         1)

Verfasst: Dienstag 19. September 2006, 16:48
von JanDMC
Danke Blackjack... das wars ;)


mfg Jan