nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Sockets

Von: christoph.lins@gmail.com [Profil]
Datum: 01.05.2008 18:16
Message-ID: <09a4d44a-1ed3-4c42-800a-4df6ef50b4e8@b64g2000hsa.googlegroups.com>
Newsgroup: de.comp.lang.python
Hey zemma,

Ich habe ein Problem mit Sockets. Ich habe folgendes Client/Server
Skript geschrieben:

Client:
[CODE]
...
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# support keep alive messages!
s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 0)
# do we need a settimout? could be useful
s.connect((host, port))
sendPacket(s, "hallo du")
time.sleep(3)
sendPacket(s, "jaja denn halt")
s.close()
[/CODE]

wobei sendPacket einen String beliebiger Länge verpackt und dann
verschickt.

Auf der anderen Seite der Server:
[CODE]
...
channel, info = service.accept()
print "connection from", socket.gethostbyaddr(info[0])
txt = getPacket(channel)
print txt
channel.shutdown(2)
channel.close()
[/CODE]

wobei getPacket das empfangene Packet entpackt und ausgibt.

Das ganze funktioniert wunderbar. Dem geneigten Leser ist jedoch
bereits aufgefallen, dass ich auf etwas anderes hinweisen will. Der
Klient versucht nach einer kurzen Pause über die gleiche Connection
nochmal ein Packet zu verschicken, jedoch hat der Server in der
Zwischenzeit die Verbindung geschlossen und das Skript terminiert. Für
mich ein bisschen überraschend: das Client-Skript gibt keinen Fehler
aus und beendet nach den 3 Sekunden.

Ich hätte erwartet, dass der Versuch, die bereits geschlossene
Verbindung zu benutzen, schief geht und dies dann auch in eine
Fehlermeldung resultiert.

Irgendeine Idee, warum das nicht so ist? Was mache ich falsch?

Thanks

[ Auf dieses Posting antworten ]