Da test, ho concluso che nel seguire tre casi verrà restituito il socket.recv(recv_size)
.Quando restituisce socket.recv (recv_size)?
Dopo la connessione è stata chiusa. Ad esempio, il lato client chiamato socket.close() o qualsiasi errore di socket si è verificato, restituirà stringa vuota .
Alcuni dati, la dimensione dei dati è superiore a
recv_size
.- Alcuni dati arrivano, la dimensione dei dati è inferiore a
recv_size
e non più dati vengono dopo un breve periodo di tempo (ho trovato 0.1s avrebbe funzionato).
Maggiori informazioni su # 3:
#server.py
while True:
data = sock.recv(10)
print data, 'EOF'
#client1.py
sock.sendall("12345")
sock.sendall("a" * 50)
#client2.py
sock.sendall("12345")
time.sleep(0.1)
sock.sendall("a" * 50)
Quando eseguo client1.py
, i server.py
Echos:
12345aaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaa EOF
Quando eseguo client2.py
, i server.py
Echos:
12345 EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
Le mie conclusioni sono corrette? Dove posso vedere la descrizione ufficiale sulla # 3?
http://docs.python.org/library/socket.html#socket.socket.recv – mouad
Grazie, ma il manuale non ha risposto alla mia domanda. – redice
Che ne dici qui: http://linux.die.net/man/2/recv – mouad