serialization - Opening up two sockets in java from different instances of an application to the same source -
इस सवाल का पहले से ही एक उत्तर है: < / P>
- 1 उत्तर
यह सिर्फ मुझे ही हो सकता है बेवकूफ, लेकिन मैं अपने कंप्यूटर पर दो अलग-अलग एप्लिकेशन खोल रहा हूं जो कंप्यूटर पर चलने वाले सर्वर के एक ही बंदरगाह से कनेक्ट होता है अब, यह एक आवेदन से जुड़ा है, लेकिन एक बार दूसरे को लॉन्च किया जाता है, यह जावा.ओ.स्ट्रीम कॉरप्रेटेड एक्सेप्शन के बारे में अपवादों का एक गुच्छा फेंकने शुरू हो जाता है: अमान्य प्रकार कोड: एसी .. यह इसलिए है क्योंकि मैं 1 सर्वर + एक ही मशीन पर चल रहे 2 ग्राहक?
संपादन: कोड:
सॉकेट सॉकेट = नया सॉकेट (InetAddress.getByName ("127.0.0.1"), 12352); सॉकेटथ्रेड स्टैड = नया सॉकेटथ्रेड (सॉकेट); ... sthread.start ();
गर्तिका धागा के अंदर:
this.ois = नया ऑब्जेक्ट इनटस्टस्ट्रीम (socket.getInputStream ()); & Lt; - ois ObjectInputStream के लिए एक चर है ... पैकेट पैकेट = (पैकेट) ois.readObject (); & Lt; - इस रेखा पर त्रुटि दिखाई देती है
संपादन # 2: दूसरा - सर्वर कोड:
जबकि (सही) {सॉकेट प्लेयर = server.accept (); System.out.println (खिलाड़ी.गेटरेमोटेसकेटआधारिका ()। ToString () + "कनेक्ट"); startSocket (खिलाड़ी); } पब्लिक स्टेटिक व्हायड स्टार्टसॉकेट (सॉकेट प्लेयर) IOException फेंकता है {नया सॉकेटथ्रेड (खिलाड़ी)। स्टार्ट (); }
अब, सर्वर पर कोई त्रुटि नहीं है।
मेरे एक कार्यान्वयन में कोड का ऐसा कुछ दिखाई देता है और मैं किसी भी संख्या में ग्राहकों को इस सर्वर से स्थानीय और साथ ही दूरस्थ मशीन से कनेक्ट करने में सक्षम हूं।
ServerSocket soc = नया सर्वरसॉकेट (पोर्ट); जबकि (सच) {try {if (StopService) {soc.close (); टूटना; } सॉकेट एस = soc.accept (); नया थ्रेड (नया कनेक्शनहैंडलर)। शुरू (); } पकड़ (SocketTimeoutException ex) {} कैच (IOException ex) {ex.printStackTrace (); }}
बस सुनिश्चित कर लें कि कनेक्शन को स्वीकार करने के बाद आपने उसे एक अलग थ्रेड पर भेज दिया है ताकि आपके सर्वर सॉकेट थ्रेड अगले इंतजार के बाद () कनेक्शन को स्वीकार कर सके।
उन त्रुटियों को थोड़ा अजीब लग रहा है यदि आपके पास पहले से ही कई थ्रेड हैं, तो शायद जब आप एकाधिक कनेक्शन स्वीकार करते हैं, तो दोनों थ्रेड्स किसी साझा ऑब्जेक्ट में किसी चीज़ को अनजाने में संशोधित करने की कोशिश करते हैं या हो सकता है कि किसी धागे को किसी अन्य धागे की गर्तिका तक पहुंच मिलती है और इसे अप्रत्याशित तरीके से जोड़ता है।
यदि आप कुर्सियों के निर्माण के लिए ज़िम्मेदार अपने कोड पर कुछ प्रकाश डाल सकते हैं, तो वास्तव में जो त्रुटि होती है, एक बेहतर जवाब दिया जा सकता है।
संपादित करें:
क्षमा करें मेरे प्रतिनिधि अभी तक टिप्पणियां जोड़ने की अनुमति नहीं देता है
कैसे सर्वर कोड जो ग्राहक को डेटा भेजता है के बारे में।
Comments
Post a Comment