मैं सर्वर पर बड़ी संख्या में सॉकेट कनेक्शन खोलकर जावा सर्वर का परीक्षण लोड करने का प्रयास कर रहा हूं, प्रमाणीकरण , कनेक्शन बंद, फिर दोहराना। मेरा ऐप थोड़ी देर के लिए महान चलाता है लेकिन अंत में मैं:"java.net.BindException: पता पहले से उपयोग में है" लोड सॉकेट निर्माण और लोड परीक्षण के लिए विनाश करने की कोशिश करते समय
java.net.BindException: Address already in use: connect
प्रलेखन मैंने पढ़ा है के अनुसार, इस का कारण यह है कि बंद सॉकेट अभी भी स्थानीय बंद होने के बाद समय की अवधि के लिए उन्हें सौंपे गए पते पर कब्जा है() था बुलाया। यह ओएस निर्भर है लेकिन मिनटों के क्रम में हो सकता है। मैंने सॉकेट पर setReuseAddress(true)
को कॉल करने की कोशिश की, उम्मीद है कि close()
के तुरंत बाद उसका पता पुन: प्रयोज्य होगा। दुर्भाग्यवश यह मामला प्रतीत नहीं होता है।
सॉकेट निर्माण के लिए मेरे कोड है:
Socket socket = new Socket();
socket.setReuseAddress(true);
socket.connect(new InetSocketAddress(m_host, m_port));
लेकिन मैं अभी भी यह त्रुटि प्राप्त:
java.net.BindException: Address already in use: connect after awhile.
वहाँ किसी अन्य तरीके से मुझे क्या करना कोशिश कर रहा हूँ पूरा करने के लिए है? उदाहरण के लिए: उदाहरण के लिए: 100 सॉकेट खोलें, उन सभी को बंद करें, 200 सॉकेट खोलें, उन्हें बंद करें, 300 खोलें, आदि 2000 या उससे अधिक सॉकेट तक।
किसी भी मदद की सराहना की जाएगी!
क्या यह सर्वर या क्लाइंट है जो अपवाद को फेंकता है? क्या यह लगातार संख्या में कनेक्शन के बाद होता है? –
आपको शायद मशीन की टीसीपी सेटिंग्स को बदलने की जरूरत है, http://docs.alfresco.com/4.0/topic/com.alfresco.enterprise.doc/tasks/alf-win-regedit.html –