2009-06-17 20 views
13

का उपयोग करने के लिए JVM (या IDE) के लिए कौन सा नेटवर्क इंटरफ़ेस निर्दिष्ट करें, स्थिति इस तरह है, मेरे मैकबुक समर्थक में दो नेटवर्क इंटरफेस हैं। एक एक स्थैतिक रूप से परिभाषित ईथरनेट इंटरफ़ेस है और दूसरा एक डीएचसीपी कॉन्फ़िगर किया गया वायरलेस इंटरफ़ेस है।क्या यह निर्दिष्ट करना संभव है कि

मैं यह पता लगाने की केवल मेरे स्थिर वायर्ड इंटरफेस का उपयोग करने के लिए एक विशिष्ट जावा परियोजना को कॉन्फ़िगर कैसे करें कोशिश कर रहा हूँ और बस या तो JVM के माध्यम से या मेरे विचार के माध्यम से सूची में पहले एक चुनना नहीं (इंटेलीजे 8)

मैंने इसे वीएमवेयर के उदाहरण के माध्यम से हासिल करने में कामयाब रहा है, जहां मेरा वर्चुअल वातावरण केवल मेरे वायर्ड इंटरफ़ेस को खिला रहा है लेकिन यह विज्ञापन प्रदर्शन समस्याएं और विंडोज़/ओएसएक्स के बीच फ़्लिपिंग के सामान्य सिरदर्द हैं।

मैं अब तक एक जेवीएम संपत्ति नहीं ढूंढ पा रहा हूं जो मुझे बताता है कि कौन सा निक इस्तेमाल होता है और न ही मैंने इंटेलिजे के लिए दस्तावेज देखा है जो इसे परिभाषित करता है। अगर किसी के पास दर्द रहित तरीके से इसे हल करने के बारे में कोई विचार है तो मैं मदद की सराहना करता हूं।

उत्तर

2

हाँ, आप निम्नलिखित तरीके से निर्दिष्ट कर सकते हैं:

int port= 52000; // कुछ नि: शुल्क बंदरगाह

MulticastSocket msocket = new MulticastSocket(port);

msocket.setInterface(InetAddress.getByName("172.16.30.205"));

कहाँ 172.16.30.205 मेरे पीसी के आईपी पते से एक है और मैं इंटरफेस के माध्यम से संवाद करना चाहता हूँ।

4

कॉम के लिए उपयोग किए जाने वाले एनआईसी ऑपरेटिंग सिस्टम द्वारा चुने गए सर्वोत्तम 'मार्ग' के आधार पर चुना जाता है जो कि किसी भी पते पर पहुंचा जा रहा है। एक विशिष्ट एनआईसी का चयन करने के लिए एनआईसी ड्राइवरों के ऊपर बैठे एप्लिकेशन के लिए कोई रास्ता नहीं है। जब आप एक विशिष्ट पते पर बंधे पोर्ट पर सुन रहे हों तो आप केवल तभी बंद हो सकते हैं, जो केवल तभी लागू होता है जब आप सर्वर चला रहे हों।

आप एनआईसी को विशिष्ट मार्ग के 'मीट्रिक' को संशोधित करने का प्रयास कर सकते हैं ताकि ओएस को इसे प्राथमिकता दी जा सके।

+0

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

+2

यह उत्तर सही नहीं है। यदि आप अपने स्थानीय सॉकेट को एक विशिष्ट स्थानीय आईपी पते पर बांधते हैं तो यह संबंधित एनआईसी का उपयोग करेगा। – EJP

12

java.net सॉकेट में एक कन्स्ट्रक्टर है जो निर्दिष्ट करता है कि कौन सा स्थानीय आईपी पता बाध्य है, और चूंकि प्रत्येक नेटवर्क इंटरफ़ेस का अपना आईपी पता मिलता है, तो आप इसका उपयोग कर सकते हैं।

लेकिन java.net से प्राप्त करना। उच्च स्तर के प्रोटोकॉल (उदाहरण के लिए HTTP) में सॉकेट पूरी तरह से एक और मामला है, लेकिन आप यह निर्दिष्ट नहीं करते कि यह क्या होगा।

मुझे ऐसा करने का एक जेवीएम-स्तर तरीका पता नहीं है, दुख की बात है, केवल उपरोक्त प्रोग्रामेटिक दृष्टिकोण।

2

यह सहायक हो सकता है: Identify Network Interface Example

"[मैं] च आप एक प्राथमिकता है या अन्यथा जो एनआईसी उपयोग करने के लिए निर्दिष्ट करने की आवश्यकता है, तो आप उचित इंटरफेस के लिए प्रणाली क्वेरी और पर कोई पता प्राप्त कर सकते हैं इंटरफ़ेस जिसका आप उपयोग करना चाहते हैं। "

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

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