Z testu doszedłem do wniosku, że w kolejnych trzech przypadkach zwróci się socket.recv(recv_size)
.Kiedy wraca plik socket.recv (recv_size)?
Po zamknięciu połączenia. Na przykład po stronie klienta o nazwie socket.close() lub wystąpił jakikolwiek błąd gniazda, zwrócony zostanie pusty ciąg znaków .
Niektóre dane pochodzą, wielkość danych jest większa niż
recv_size
.- Niektóre dane przychodzą, rozmiar danych jest mniejszy niż
recv_size
, a po krótkim czasie nie pojawiają się żadne dane (stwierdziłem, że 0.1s zadziała).
Więcej szczegółów na temat # 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)
Kiedy biegnę client1.py
, że server.py
Echos:
12345aaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaa EOF
Kiedy biegnę client2.py
, że server.py
Echos:
12345 EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
Czy moje wnioski są prawidłowe? Gdzie mogę zobaczyć oficjalny opis nr 3?
http://docs.python.org/library/socket.html#socket.socket.recv – mouad
Dzięki, ale podręcznik nie odpowiedział na moje pytanie. – redice
Co powiecie tutaj: http://linux.die.net/man/2/recv – mouad