मुझे जावा प्रोग्राम को कोड करना होगा जो नेटवर्क से संदेश प्राप्त करेगा और उपयोगकर्ता को अपनी सामग्री प्रदर्शित करेगा। समस्या यह है कि मुझे प्राप्त संदेश सी संरचनाओं के बाइनरी डंप हैं। इसमें कुछ संदेश छोटे एंडियन मशीनों से आ रहे हैं और कुछ बड़े एंडियन से हैं, बिना फ़ील्ड को नेटवर्क बाइट ऑर्डर में परिवर्तित किया जा रहा है। मेरे पास एक तरीका है जेएनआई का उपयोग करना और सी एक्सट्रैक्ट्स को कुछ एक्सएमएल स्ट्रिंग में कनवर्ट करना और उसके बाद इस ऑब्जेक्ट स्ट्रिंग को जावा ऑब्जेक्ट में क्रमबद्ध करना है। यह एक श्रमिक नौकरी है क्योंकि लगभग 122 विभिन्न structs और उनमें से प्रत्येक में 20 से अधिक फ़ील्ड हैं। मुझे आश्चर्य है कि पुस्तकालय/उपकरण/पद्धति है जो मेरी नौकरी को थोड़ा आसान बना सकती है?जावा में सी स्ट्रक्चर का उपयोग
उत्तर
Swig जावा ऑब्जेक्ट्स में सी structs मैपिंग के संदर्भ में आपके लिए बहुत कठिन दोहराव वाले काम को संभालेगा। Swig/Java manual और wrapping C structures पर प्रविष्टि देखें।
धन्यवाद ब्रायन, मुझे लगता है कि स्विग निश्चित रूप से सहायता करेगा – Rohin
आप InputStream
से डेटा लोड करने के लिए DataInputStream
का उपयोग कर सकते हैं। जब तक आप अपने structs के सटीक लेआउट को जानते हैं, यह पर्याप्त होना चाहिए।
java.nio में बाइटबफर है, जो आवश्यक होने पर पढ़ने और लिखने पर उड़ान भरने के बाइट ऑर्डर का समर्थन करता है।
प्रीऑन नामक एक लाइब्रेरी है जिसे आपको इस प्रकार के कार्य में मदद करने के लिए डिज़ाइन किया गया था: Preon site असल में, वे आपके pojo में प्रत्येक फ़ील्ड से जुड़ी टिप्पणियों में बाइनरी स्ट्रीम से अपने pojo पढ़ने के लिए सभी तर्क रखने की कोशिश करते हैं।
उनके डॉक्स से एक उदाहरण है जहाँ आप पूर्णांक आप पढ़ रहे हैं के आकार को नियंत्रित:
class Rectangle
{
@BoundNumber(size="16") private int x1;
@BoundNumber(size="16") private int y1;
@BoundNumber(size="16") private int x2;
@BoundNumber(size="16") private int y2;
}
या निर्दिष्ट करने के लिए endianness:
class Rectangle
{
@BoundNumber(byteOrder=LittleEndian) private int x1;
@BoundNumber(byteOrder=LittleEndian) private int y1;
@BoundNumber(byteOrder=LittleEndian) private int x2;
@BoundNumber(byteOrder=LittleEndian) private int y2;
}
तुम भी करने के लिए संदर्भ के साथ उपयोग कर सकते हैं मिनी समीकरण आकार/लंबाई, आदि निर्दिष्ट करने के लिए पिछले फ़ील्ड में मान
@BoundList(size="width * height") byte[] pixels;
@BoundNumber(size="nrBits * 2") int value;
ओह, और वे एलएसओ सशर्त तर्क प्रदान करते हैं, सभी एनोटेशन में।
- 1. सी स्ट्रक्चर में एरे
- 2. सी # स्ट्रक्चर में स्ट्रिंग्स का प्रबंधन
- 3. सी स्ट्रक्चर का उपयोग जिसमें ओबीजेसी ऑब्जेक्ट्स शामिल हैं?
- 4. सी ++ में 'स्ट्रक्चर' और 'टाइपपीफ स्ट्रक्चर' के बीच अंतर?
- 5. सी/सी ++ स्ट्रक्चर बनाम कक्षा
- 6. रूबी में हैश के बजाय स्ट्रक्चर का उपयोग कब करें?
- 7. सी स्ट्रक्चर सिंटैक्स प्रश्न
- 8. सी ++ स्ट्रक्चर: नाम
- 9. सी ++ स्ट्रक्चर के वेक्टर का मानचित्र?
- 10. पायथन में डेटा स्ट्रक्चर
- 11. सी में स्ट्रक्चर सीरियलाइजेशन और एमपीआई
- 12. डब्ल्यूसीएफ सेवाओं के साथ स्ट्रक्चर का उपयोग
- 13. जावा में स्ट्रक्चर खराब अभ्यास के रूप में कक्षा का उपयोग क्यों कर रहा है?
- 14. सी (++) स्ट्रक्चर फोर्स अतिरिक्त पैडिंग
- 15. सी ++ कक्षा या स्ट्रक्चर compatiblity सी संरचना
- 16. स्ट्रक्चर
- 17. सी/सी ++: कॉन्स्ट स्ट्रक्चर के भीतर पॉइंटर्स
- 18. जावा वेब प्रोजेक्ट स्ट्रक्चर बेस्ट प्रैक्टिस
- 19. उद्देश्य-सी (आईओएस के लिए) में स्ट्रक्चर का उपयोग करना: समयपूर्व अनुकूलन?
- 20. जावा 128 बिट स्ट्रक्चर बिट मैनिपुलेशन
- 21. कीवर्ड "नया" सी # में एक स्ट्रक्चर में क्या करता है?
- 22. सी में संरचना का उपयोग कैसे करें?
- 23. उद्देश्य सी स्ट्रक्चर और मेमोरी प्रबंधन
- 24. सी ++ एसटीएल डेटा स्ट्रक्चर संरेखण, एल्गोरिदम वेक्टरराइजेशन
- 25. सी ++ लुकटाइम ओ (1) के साथ डेटा स्ट्रक्चर, जैसे जावा के हैशपैप एसएलएल में?
- 26. जावास्क्रिप्ट में स्ट्रक्चर
- 27. स्ट्रक्चर टाइपपीफ
- 28. सी ++ स्ट्रक्चर संरेखण और एसटीएल वैक्टर
- 29. स्ट्रक्चर epoll_event
- 30. llvm का स्ट्रिंग प्रतिनिधित्व :: टाइप स्ट्रक्चर
क्या आप किसी भी नेटवर्क का उपयोग कर किसी भी मौके से हैं? यदि ऐसा है, तो डीबीसी फ़ाइल को पार्स करना सबसे अच्छा समाधान होगा। – gramm
दुर्भाग्यवश यह एक उचित दूरसंचार प्रणाली है। मैं एक डीबग टूल लिख रहा हूं जो सिस्टम के आंतरिक मॉड्यूल के बीच संदेशों को आदान-प्रदान कर देगा .. कॉल प्रवाह आरेख की तरह। – Rohin