2008-11-14 11 views
10

मैं एक त्वरित फ़ाइल जावा फ़ाइल (Wireshark से) की सामग्री को पढ़ने के लिए एक त्वरित छोटा जावा एप्लिकेशन लिखने की कोशिश कर रहा हूं और डेटा को लिनक्स बॉक्स पर नेटवर्क पर वापस चलाता हूं। फ़ाइल में केवल यूडीपी ब्रॉडकास्ट पैकेट होंगे, इसलिए मुझे केवल वही करने के लिए पैकेट से टाइमस्टैम्प, पोर्ट नंबर और डेटा की आवश्यकता है। मेरी समस्या यह है कि मैं जिस एप्लिकेशन को इस कोड के साथ परीक्षण करने का प्रयास कर रहा हूं वह विंडोज़ पर आईपीवी 4 यूडीपी ब्रॉडकास्ट सुन रहा है। मेरा टेस्ट एप्लिकेशन डेटा भेजने के लिए आईपीवी 6 सॉकेट खोलता रहता है।जावा 6 का प्रयोग, लिनक्स पर मैं आईपीवी 4 सॉकेट का उपयोग कैसे कर सकता हूं?

मैं यह निर्धारित करने के लिए netstat -a -u -p का उपयोग कर रहा हूं कि सॉकेट एक udp6 सॉकेट है। खिड़कियों पर मुझे पता है कि यह नहीं है।

जावा में लिनक्स पर टेस्ट ऐप को इसके बजाय udp या udp4 सॉकेट खोलने के लिए सबसे आसान या सबसे अच्छा तरीका क्या है? मैं हर बार ipv4 नेटवर्क पता प्रदान करने के लिए मजबूर नहीं होना चाहता हूं। मैं यह कोड याद रखने के बिना किसी अन्य मशीन पर इस कोड को स्थानांतरित करने में सक्षम होना चाहता हूं कि उनकी कुछ कॉन्फ़िगरेशन को बदलने की आवश्यकता है।

उत्तर

17

Add -Djava.net.preferIPv4Stack = आपके जावा एप्लिकेशन रनटाइम गुणों के लिए सही है।

+3

क्या आपको नहीं लगता कि आपके उत्तर में "सिगब्लॉक" होना थोड़ा सा है? आपका नाम, आखिरकार, आपके उत्तर के निचले दाएं कोने में, क्लिक करने योग्य और सब कुछ है ... – unwind

+0

एंड्रॉइड पर यह कैसे किया जा सकता है? – user239558

3

इसके अलावा, आप (रूट के रूप में) इस आदेश का उपयोग कर सकते हैं और आप हर जावा आवेदन में -Djava.net.preferIPv4Stack = सच पैरामीटर जोड़ने की जरूरत नहीं होगी:

# echo 0 > /proc/sys/net/ipv6/bindv6only 

आप इस विन्यास रखना चाहते हैं हमेशा के लिए आप इसे कुछ प्रारंभिक लिपि में लिख सकते हैं।

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