मेरा अनुमान है कि इस सवाल का गलत तरीके से शब्दों में है। मैं जब क्यों InputStream और OutputStream के अपने प्रयोग लग रहा था मूल्य 0. की एक बाइट का सामना पर 0 करने के लिए पूरे सरणी की स्थापना किए जाने की इन मान है कि बाइट्स मान्य ASCII और बाइनरी नहीं होते हैं एक जवाब के लिए खोज इस पाया। चूंकि सवाल सही नहीं हुआ है और यह पूछता है, और किसी और ने इसे एक संभावना के रूप में पकड़ा नहीं है, मुझे लगता है कि मुझे अपनी खोज को कहीं और संतुष्ट करना होगा।
जो मैं करने की कोशिश कर रहा था वह एक पारदर्शी सॉकेट क्लास लिखना था जो डेटागैप पैकेट को पारदर्शी रूप से उपयोग करने के लिए या तो एक टीसीपी (सॉकेट/सर्वरसेट) या यूडीपी (डेटाग्राम सॉकेट) को तत्काल कर सकता है। यह यूडीपी के लिए काम करता है, लेकिन टीसीपी के लिए (अभी तक) नहीं।
फ़ॉलो-अप: मैं पुष्टि कर ली है कि ये धाराओं खुद को बाइनरी स्थानान्तरण के लिए बेकार हैं लगता है, लेकिन वे एक अधिक प्रोग्रामर के अनुकूल इन्स्टेन्शियशन को पारित किया जा सकता है कि, उदाहरण के लिए,
नई DataOutputStream (socket.getOutputStream()) writeInt (5)।
^तो उस विचार के लिए ज्यादा। यह एक "पोर्टेबल" जिस तरह से, जैसे कि, शायद ASCII, जिस पर सभी कोई मदद नहीं है में डेटा लिखते हैं, खासकर जब सॉफ्टवेयर की नकल है जिस पर मैं कोई नियंत्रण नहीं!
स्रोत
2012-12-07 17:41:25
मैं इसे कैसे लूप कर सकता हूं? जैसे इनपुट स्ट्रीम –
@ क्रिस्टोफर फ्रांसिस्को लूप की प्रतीक्षा करते समय? बस एक लूप से विधियों को बुलाओ। यदि आपका मतलब है कि आपके प्रोग्राम को रोक दिए बिना किसी संदेश की प्रतीक्षा करें, तो आप केवल अलग थ्रेड पर I/O कर सकते हैं या एनआईओ का उपयोग करने के लिए इसे संशोधित कर सकते हैं। –
यह परीक्षण नहीं किया है, लेकिन यदि लेन> [टीसीपी पैकेट आकार], मुझे लगता है कि readFully() सभी सामग्री लेकिन सिर्फ पहली उपलब्ध भागों नहीं पढ़ सकता है .... (https://docs.oracle.com/javase/ 7/डॉक्स/एपीआई/जावा/आईओ/डाटाइनपुट.html # readFully (बाइट [])) तो यह कोड इस मामले में काम नहीं कर सकता है, है ना? – ntg