2010-10-05 8 views
5

मैं जावा में सॉकेट से अधिक धारावाहिक डेटा भेजने के उदाहरण के बहुत सारे देखा है, लेकिन सभी मैं चाहता हूँ कुछ सरल पूर्णांक और एक स्ट्रिंग भेजने के लिए है। और, समस्या यह है कि मैं इन्हें सीमैं कैसे एक जावा सॉकेट से अधिक बाइनरी प्रारूप में डेटा भेज सकते हैं?

में लिखी गई बाइनरी में संवाद करने की कोशिश कर रहा हूं, तो नीचे पंक्ति: मैं जावा में सॉकेट पर कुछ बाइट कैसे भेज सकता हूं?

+0

क्या आप सुनिश्चित हैं कि सी प्रोग्राम और जावा प्रोग्राम द्विआधारी स्याही का इलाज करता है और उसी तरह तार करता है? यदि आप नहीं हैं, तो उन्हें सादे पुराने पाठ के रूप में भेजें। आप सी कार्यक्रम का नियंत्रण नहीं है, तो सॉकेट पढ़ने तो आप कोई विकल्प नहीं होगा, लेकिन डेटा जो कुछ भी प्रारूप में सी कार्यक्रम चाहता है भेजने के लिए। –

उत्तर

4

मैं वास्तव में सीधे जावा सॉकेट लाइब्रेरी का उपयोग न करने की अनुशंसा करता हूं। मुझे नेटी (जेबॉस से) को वास्तव में कार्यान्वित करने और वास्तव में शक्तिशाली होने के लिए मिला है। Netty ChannelBuffer कक्षा स्ट्रीम नीचे POJOs लिखने के लिए यदि आप चाहें तो अपने स्वयं के एनकोडर और डिकोडर लिख सकते लिए विभिन्न डेटा प्रकार और निश्चित रूप से लिखने के लिए विकल्पों में से एक पूरी मेजबान के साथ आता है।

यह पृष्ठ वास्तव में एक अच्छा स्टार्टर है - मैं इसे पढ़ने के 30 मिनट के भीतर कस्टम एन्कोडर्स और डिकोडर्स के साथ एक काफी परिष्कृत ग्राहक/सर्वर बनाने में सक्षम था: http://docs.jboss.org/netty/3.2/guide/html/start.html

यदि आप वास्तव में जावा सॉकेट का उपयोग करना चाहते हैं। सॉकेट उत्पादन धारा एक DataOutputStream जो आप उदाहरण के लिए भी कई विभिन्न डेटा प्रकार लिखने के लिए, की अनुमति देता है में लिपटे जा सकता है:

new DataOutputStream(socket.getOutputStream()).writeInt(5); 

मुझे आशा है कि उपयोगी है।

+0

DataOutputStream बस ठीक काम करता प्रतीत होता है। मेरा कामकाजी खत्म हो गया है, मैं कल इस पर वापस आऊंगा। ध्यान रखें कि इस ट्यूटोरियल के लिए लिंक Netty की JBoss संस्करण के लिए है रहो – evilpenguin

+0

। यह netty.io डाउनलोड के एपीआई से मेल नहीं खाता है कि ट्यूटोरियल लिंक करता है। इसके बजाए http://netty.io/wiki/user-guide-for-4.x.html का प्रयोग करें – Speakjava

9

आप Socket द्वारा दिए गए सरल OutputStream का उपयोग कर सकते हैं।
वहाँ आप write बाइट्स कर सकते हैं से।

यदि आप चाहते हैं कि आप इस स्ट्रीम को BufferedOutputStream में बफर रखने के लिए भी समाहित कर सकें।

1

मैं धारा स्थानांतरण के लिए Protocol Buffers और डेटा स्थानांतरण के लिए ZeroMQ में देखने की अनुशंसा करता हूं।

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