2012-02-06 11 views
8

मैं ऐसे एप्लिकेशन पर काम कर रहा हूं जिसमें ग्लासफ़िश सर्वर और सी कर्नेल पर होस्ट किया गया जावा वेब इंटरफ़ेस है जिसे लिनक्स डिमन के रूप में कार्यान्वित किया गया है।जावा <-> सी ब्रिज

मेरी सबसे बड़ी समस्या यह है कि रिमोट प्रक्रिया कॉल कैसे करें। मुझे दोनों दिशाओं में कार्यों और विधियों को कॉल करने की आवश्यकता है। ये संभावित समाधान हैं जिन पर मैं सोच सकता हूं:

  1. आरपीसी लागू करने के लिए जावा मूल इंटरफ़ेस और नेटवर्क सॉकेट का उपयोग करें।
  2. DBus - के रूप में तक मुझे पता है DBus जावा और सी

के बीच आरपीसी के लिए इस्तेमाल किया जा सकता मैं बाहरी पुस्तकालयों या चौखटे का उपयोग किए बिना सबसे बुनियादी तरीका उपयोग करना चाहते हैं। क्या जावा और सी के बीच केवल सॉकेट का उपयोग करके कार्यों/विधियों को कॉल करना संभव है? ओएस जो मैं उपयोग करता हूं वह सेंटोस है।

क्या दो भाषाओं को जोड़ने के लिए और अधिक शानदार तरीका है?

उत्तर

8

बाहरी पुस्तकालयों के बिना, केवल सॉकेट बने रहते हैं। लेकिन मैं डीबीस को बाहरी पुस्तकालय के रूप में वर्गीकृत करूंगा, है ना?

यदि सी प्रोग्राम सॉकेट का उपयोग कर सकता है, तो जावा मूल इंटरफेस की कोई आवश्यकता नहीं है। जावा कोड open sockets from Java, सी कोड को सुनकर सॉकेट को कॉल कर सकता है।

यदि आप डीबीस की अनुमति देते हैं, तो आपको नेटवर्किंग और आरपीसी प्रोटोकॉल की पर्याप्तता पर विचार करना चाहिए जिसमें सी और जावा दोनों के लिए पुस्तकालय हैं। (फिर, जेएनआई का उपयोग करने की कोई आवश्यकता नहीं है।)

डीबीस मार्ग पर जाकर Java documentation और tutorial देखें।

+0

क्या आप कुछ और जानकारी देंगे कि इसे कैसे कार्यान्वित किया जा सकता है? –

+2

@ user1103606 यह एक काफी उन्नत विषय है, इसलिए इसे सरल जवाब देना मुश्किल है। क्या आप जानते हैं कि टीसीपी सॉकेट कनेक्शन और कॉल विधियों को कैसे लिखना है (उदाहरण के लिए प्रतिबिंब का उपयोग करना?) –

+0

मुझे पता है कि सी नेटवर्क सर्वर और क्लाइंट प्रोग्राम कैसे लिखना है। क्या आप समझाएंगे कि जावा से सी तरीकों को केवल सॉकेट का उपयोग करके कैसे कॉल करें? प्रतिबिंब क्या है? –

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