socket.recv
Verfasst: Freitag 30. Juli 2004, 19:12
HI. Ich bin gerade am schreiben eines Servers und rätsle wie ich Daten über sockets sicher empfangen kann. Mit sicher meine ich, dass der socket nicht mein Programm blockiert, weil keine Daten mehr zum empfangen da sind. Da das ganze sessionbasiert werden soll (POP3 lässt grüßen ) will ich ein Timeout von 600 Sekunden setzen. das setzt den Socket in timeout mode. Nun hatte ich aber vor Daten über ein Fileobjekt zeilenweise zu lesen (socket.makefile("rb",-1)) . Das dumme ist, die Docu meint dazu, man sollte Fileobjekte nur dann benutzen, wenn der Socket im blocking mode ist.
thx, Milan
Was hat das für Konsequenzen für mich? Kann ich Daten auch anders empfangen? Oder was wäre empfehlenswert?Timeout mode internally sets the socket in non-blocking mode. The blocking and timeout modes are shared between file descriptors and socket objects that refer to the same network endpoint. A consequence of this is that file objects returned by the makefile() method should only be used when the socket is in blocking mode; in timeout or non-blocking mode file operations that cannot be completed immediately will fail.
thx, Milan