Pythonfrage: setblocking() ? recv()?
-
recv(bytes)
wartet ja bis wirklich ALLE <bytes> Bytes empfangen wurden. Deswegen funkt dieses prog net gescheit. Mit setblocking(0)
hab ich den socket auf non-blocking gesetzt und auch die exception angefangen, aber es wartet mmer noch bis alle <bytes>
Byes empfangen wurden, in meinem fall 4096.import socket, thread def recv_and_output(args): while 1: try: buf = args.recv(4096) if not buf: break print buf except socket.error, (errno, string): pass sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP) sock.setblocking(0) try: sock.connect(('pop.gmx.net', 110)) except socket.error: pass thread.start_new_thread(recv_and_output, (sock,)) while 1: buf = raw_input() if not sock.send(buf): break sock.close()Warum funkt das nicht? In C hatte ich keine probleme, hier in python schon.
kann mir jemand helfen? Ich möchte, dass recv(4096) nicht wartet bis 4096 bytes eingelesen werden, sondern dass soviele bytes eingelesen werden, wie zZ vorhanden sind, was aber eine maximalgrösse von 4096 betragen darf
-
Hat deine Maschine zufällig eine Celeron-CPU? Damit hat Python nämlich generell Probleme, u.a. funktionieren die Sockets mit diesen Prozessoren nicht richtig...
-
Würden die Moderatoren bitte diesen Thread von Müll befreien? Danke.
BACK TO TOPIC: Hat da jemand eine Idee?