Từ thử nghiệm, tôi kết luận rằng trong ba trường hợp sau, socket.recv(recv_size)
sẽ trả về.Khi nào socket.recv (recv_size) trả về?
Sau khi đóng kết nối. Ví dụ, phía máy khách được gọi là socket.close() hoặc bất kỳ lỗi socket nào xảy ra, nó sẽ trả về chuỗi rỗng.
Một số dữ liệu đến, kích thước của dữ liệu là hơn
recv_size
.- Một số dữ liệu đến, kích thước của dữ liệu ít hơn
recv_size
và không có nhiều dữ liệu hơn đến sau một thời gian ngắn (tôi thấy 0.1s sẽ làm việc).
Thông tin chi tiết về # 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)
Khi tôi chạy client1.py
, các server.py
echos:
12345aaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaa EOF
Khi tôi chạy client2.py
, các server.py
echos:
12345 EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
Kết luận của tôi có đúng không? Tôi có thể xem mô tả chính thức về số 3 ở đâu?
http://docs.python.org/library/socket.html#socket.socket.recv – mouad
Cảm ơn, nhưng hướng dẫn không trả lời câu hỏi của tôi. – redice
Làm thế nào về ở đây: http://linux.die.net/man/2/recv – mouad