परीक्षण से, मैंने निष्कर्ष निकाला कि निम्नलिखित तीन मामलों में socket.recv(recv_size)
वापस आ जाएगा।socket.recv (recv_size) कब वापस आता है?
कनेक्शन बंद होने के बाद। उदाहरण के लिए, क्लाइंट साइड जिसे सॉकेट.क्लोस() या किसी सॉकेट त्रुटि कहा जाता है, यह खाली स्ट्रिंग लौटाएगा।
कुछ डेटा आते हैं, डेटा का आकार
recv_size
से अधिक है।- कुछ डेटा आते हैं, डेटा का आकार
recv_size
से कम है और कम समय के बाद कोई डेटा नहीं आता है (मुझे लगता है कि 0.1s काम करेंगे)।
अधिक # 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)
जब मैं client1.py
चलाने के लिए, server.py
इको:
12345aaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaa EOF
जब मैं client2.py
चलाने के लिए, server.py
इको:
12345 EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
aaaaaaaaaa EOF
क्या मेरे निष्कर्ष सही हैं? मैं # 3 के बारे में आधिकारिक विवरण कहां देख सकता हूं?
http://docs.python.org/library/socket.html#socket.socket.recv – mouad
धन्यवाद, लेकिन मैनुअल ने मेरे प्रश्न का उत्तर नहीं दिया। – redice
यहां के बारे में कैसे: http://linux.die.net/man/2/recv – mouad