प्रोग्राम सर्वर से कनेक्ट होता है, और जब कनेक्शन सर्वर से बंद होता है, तो यदि मैं इसे फिर से कनेक्ट करने का प्रयास करता हूं तो कहता है: socket.error: [Errno 9] Bad file descriptor
यदि मैं क्लाइंट में सॉकेट बंद करता हूं और फिर मैं पुनः कनेक्ट करने का प्रयास करता हूं, तो यह कहता है: socket.error: [Errno 106] Transport endpoint is already connected
।टूटी हुई पाइप के बाद मैं सॉकेट को दोबारा कैसे जोड़ सकता हूं?
क्या कोई नया सॉकेट बनाने के बिना टूटी हुई पाइप के बाद इसे फिर से कनेक्ट करने का कोई तरीका है?
import socket
host = '127.0.0.1'
port = 1337
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
def loop():
try:
while 1:
print s.recv(512)
except socket.error:
#s.close()?
connect()
def connect():
s.connect((host, port))
loop()
connect()
इसका कारण यह है कि एक सॉकेट कनेक्शन ऑपरेटिंग सिस्टम स्तर पर प्रबंधित होता है (और यह किसी प्रोग्रामिंग भाषा के लिए जाता है)। लिनक्स के तहत, एक कनेक्शन डिस्क्रिप्टर कनेक्शन के लिए आवंटित किया जाता है जो कनेक्शन बंद होने पर नष्ट हो जाता है, इसलिए आपको फिर से कनेक्ट करने की आवश्यकता होती है जो एक नई फ़ाइल डिस्क्रिप्टर बनाता है। – EdwardGarson