Socket "richtig" beenden

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
JanDMC
User
Beiträge: 95
Registriert: Donnerstag 23. September 2004, 19:35
Kontaktdaten:

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?
joa nää python is toll :D
Brok3r
User
Beiträge: 29
Registriert: Montag 24. Oktober 2005, 13:48

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.
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)
JanDMC
User
Beiträge: 95
Registriert: Donnerstag 23. September 2004, 19:35
Kontaktdaten:

Danke Blackjack... das wars ;)


mfg Jan
joa nää python is toll :D
Antworten