जावा में नेटवर्क इंटरफ़ेस खोजना जावा में, मैं java.net.NetworkInterface को इंटरफ़ेस के साथ संबंधित डिफ़ॉल्ट गेटवे तक पहुंचाना चाहता हूं। इंटरफेस, आदि के नाम, समय से पहले नहीं जानते हैं।जावा गेटवे
$ netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.10.10.0 * 255.255.255.0 U 0 0 0 bond0
10.10.11.0 * 255.255.255.0 U 0 0 0 eth2
10.10.11.0 * 255.255.255.0 U 0 0 0 eth3
10.10.12.0 * 255.255.255.0 U 0 0 0 eth4
10.10.13.0 * 255.255.255.0 U 0 0 0 eth5
default mygateway 0.0.0.0 UG 0 0 0 bond0
कुछ गूगल खोज करने के बाद, मैं अभी भी किसी भी सवाल का जवाब नहीं मिला है:
अन्य-शब्दों में, यदि निम्नलिखित मेरी अनुमार्गण तालिका था, मैं इंटरफेस के साथ "bond0" इसी चाहते हैं।
संपादित करें:
जावा रनटाइम कैसे यह जानकारी प्राप्त करने के लिए (कहना है कि यह उजागर है) "पता" चाहिए। Java.net में शामिल होने पर। मल्टीकास्ट सॉकेट में शामिल होने वाले मल्टीकास्ट समूह में (InetAddress grpAddr) कॉल (जो इंटरफ़ेस निर्दिष्ट नहीं करता है), स्पष्ट व्यवहार "डिफ़ॉल्ट" इंटरफ़ेस (जैसा ऊपर परिभाषित किया गया है) पर शामिल होना प्रतीत होता है। यह तब भी काम करता है जब डिफ़ॉल्ट intf रूटिंग तालिका में सूचीबद्ध पहला इंटरफ़ेस नहीं होता है। हालांकि, अंतर्निहित POSIX कॉल है कि एक mcast समूह से जुड़ता है इस जानकारी !:
struct ip_mreqn group;
group.imr_multiaddr = ...
group.imr_address = **address of the interface!**
setsockopty(sd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &group, sizeof(group));
बिंदु की आवश्यकता है: एक बहुस्त्र्पीय समूह है कि INTF, जावा मंच की आवश्यकता नहीं है में शामिल होने के लिए एक विधि प्रदान करके, परोक्ष , प्रत्येक मंच पर उपयुक्त intf निर्धारित करने के लिए पता होना चाहिए।
ऊपर संपादित देखें ... – Josh
ठीक है, मैं आपका बिंदु देखता हूं। हालांकि, ऐसा लगता है कि कॉल को अभी भी एक पता की आवश्यकता है, हां? java.net.NetworkInterface इंटरफेस (और उनके पते) प्राप्त कर सकता है, और थोड़ा चतुरता यह तय कर सकती है कि किसके पास दिए गए पते का मालिक है। मुझे लगता है कि आपकी समस्या अधिक जटिल है, क्योंकि आप पहले निम्न स्तर की रूटिंग जानकारी की तलाश में हैं, फिर (डिफ़ॉल्ट) मार्ग से जुड़े इंटरफ़ेस को खोजने के लिए पीछे की तरफ। – Carl
इसे मल्टीकास्ट पता (यानी, 224.xxx-239.xxx में विशेष पता) की आवश्यकता है, इंटरफ़ेस का पता नहीं। तर्क में ऐसी कोई जानकारी प्रदान नहीं की जाती है। तो समस्या "कॉल" कॉल को हल करना चाहिए वही है। यह जादुई रूप से डिफ़ॉल्ट मार्ग (स्पष्ट व्यवहार) के साथ एक चुनता है। इसी प्रकार, मैं जानना चाहता हूं कि कौन सा इंटरफ़ेस डिफ़ॉल्ट मार्ग है। – Josh