2015-10-16 8 views
6

मुझे पता है कि इस तरह के सवाल को एसओ पर पहले से कई बार पूछा गया है, लेकिन एक धागे ने उस सटीक समस्या को संबोधित नहीं किया जिसे हम इस समय सामना कर रहे हैं।सी # टीसीपी क्लाइंट, एक साथ स्ट्रीम को पढ़ने और लिखने के लिए

हम मूल रूप से एक टीसीपी सर्वर/क्लाइंट एप्लिकेशन पर काम कर रहे हैं, जहां सर्वर जावा में लिखा गया है और क्लाइंट सी # में लिखा गया है। मैं जावा साइड पर हूं, और मैं अपने बफर के लिए पृथक और आउटपुट स्ट्रीम का उपयोग कर रहा हूं।

हमारी समस्या यह है कि यदि क्लाइंट सर्वर से संदेश प्राप्त करता है और उन संदेशों को बफर से असंक्रोनस पढ़ता है और उस प्रक्रिया के दौरान इसमें कुछ लिखने का प्रयास करता है तो कोई अपवाद नहीं होता है।

मेरा प्रश्न है: इस परिदृश्य में जाने का तरीका क्या है? अलग धाराएं बनाना? हमने पहले से ही कोशिश की, लेकिन ऐसा लगता है जैसे सी # हमें नहीं चाहता है। हम यहां एक समाधान की बेहद जरूरी जरूरत है, और किसी भी मदद की सराहना की है!

+0

असल में, आपको सी # में एक समाधान पढ़ने और लिखने के लिए एक समाधान की आवश्यकता है? जावा पक्ष काम कर रहा है? –

+0

हाँ, यह काम कर रहा है। हमने अभी इस मुद्दे को हल किया है - लेकिन फिर भी यह जानना चाहेंगे कि सी # – Psylution

उत्तर

7

नहीं, यह काम करना चाहिए। आपको जो चाहिए वह TcpClient है, जो आपके पास पहले से है। TcpClient.GetStream() से, NetworkStream लौटा रहा है। फिर सिंक्रनाइज़ेशन की आवश्यकता के बिना पढ़ना और लिखना संचालन समवर्ती/एक साथ हो सकता है। तो पढ़ना और लिखना एक ही समय में हो सकता है।

सिंक्रनाइज़ किया जाना क्या है एकाधिक समवर्ती पढ़ता है। सभी समवर्ती पढ़ने को lock(objReads) द्वारा सिंक्रनाइज़ किया जाना है।

इसी प्रकार, एकाधिक समवर्ती लिखने को lock(objWrites) द्वारा सिंक्रनाइज़ किया जाना है।

MSDN says, यह गारंटी है।

कृपया ध्यान दें, मैंने इसे स्पष्ट कर दिया है, जो पढ़ता है और लिखता है अलग-अलग ताले होते हैं।

+0

में पृथक धाराओं का कोई तरीका है या नहीं, हमने पहले ही इसे हल किया है, समस्या हमारे पक्ष में थी - लेकिन अतिरिक्त स्पष्टीकरण के लिए धन्यवाद! अब मुझे यह भी पता है कि मैं सिर्फ _need_ अलग धाराओं नहीं करता हूं। – Psylution

+0

@ neil-patrao उत्तर में सुधार के लिए धन्यवाद :)। – ipavlu

संबंधित मुद्दे