मेरे पास टीसीपी/आईपी नेटवर्क पर क्लाइंट सॉकेट के बारे में कोई प्रश्न है। मान लीजिए कि मैं का उपयोगपायथन: बाइंडिंग सॉकेट: "पता पहले से उपयोग में है"
try:
comSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
comSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
except socket.error, msg:
sys.stderr.write("[ERROR] %s\n" % msg[1])
sys.exit(1)
try:
comSocket.bind(('', 5555))
comSocket.connect()
except socket.error, msg:
sys.stderr.write("[ERROR] %s\n" % msg[1])
sys.exit(2)
बनाया सॉकेट पोर्ट 5555. के लिए बाध्य होंगे चलो समस्या यह है कि कनेक्शन
comSocket.shutdown(1)
comSocket.close()
समाप्त होने wireshark का उपयोग करने के बाद, मैं सॉकेट फिन, एसीके और एसीके के साथ बंद हुआ देखना दोनों तरफ से, मैं बंदरगाह का फिर से उपयोग नहीं कर सकता। मैं निम्नलिखित त्रुटि मिलती है:
[ERROR] Address already in use
मुझे आश्चर्य है कि कैसे मैं बंदरगाह स्पष्ट तुरंत ताकि अगली बार जब मैं अभी भी है कि एक ही बंदरगाह का उपयोग कर सकते कर सकते हैं।
comSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
setsockopt समस्या धन्यवाद हल करने में सक्षम होने के लिए प्रतीत नहीं होता!
ग्राहक को एक विशिष्ट पोर्ट की आवश्यकता क्यों है? –
क्योंकि मुझे इसे एक उत्पादन सर्वर में रखना है, और उस सर्वर में, सभी आउटगोइंग कनेक्शन अवरुद्ध हैं। मुझे सॉकेट में एक विशिष्ट पोर्ट निर्दिष्ट करने की आवश्यकता है ताकि वे फ़ायरवॉल पर एक नियम स्थापित कर सकें जो कनेक्शन को पार करने की अनुमति देता है। –
मेरा सुझाव है कि आप वास्तविक कोड कॉपी और पेस्ट करें। आपने जो लिखा है, उसमें एक स्पष्ट त्रुटि है जो आपको उस व्यवहार को देखने से रोकती है जिसे आपने देखा है। इससे पाठकों को कोई जानकारी नहीं होती है कि आपने हमें यह बताने के लिए और क्या उपेक्षा की है कि आपकी समस्या हो सकती है। –