De la prueba, llegué a la conclusión de que en los siguientes tres casos volverá el socket.recv(recv_size)
.¿Cuándo regresa socket.recv (recv_size)?
Después de que se cerró la conexión. Por ejemplo, el lado del cliente llamado socket.close() o se produjo un error de socket, devolvería cadena vacía.
Algunos datos vienen, el tamaño de los datos es más que
recv_size
.- Algunos datos vienen, el tamaño de los datos es menor que
recv_size
y no hay más datos después de un tiempo corto (encontré que 0.1s funcionarían).
Más detalles sobre # 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)
Cuando corro client1.py
, los server.py
Echos:
12345aaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaa EOF
Cuando corro client2.py
, los server.py
Echos:
12345 EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
¿Son correctas mis conclusiones? ¿Dónde puedo ver la descripción oficial sobre el # 3?
http://docs.python.org/library/socket.html#socket.socket.recv – mouad
Gracias, pero el manual no respondió mi pregunta. – redice
Qué tal aquí: http://linux.die.net/man/2/recv – mouad