127.0.0.1 लूपबैक एडाप्टर है - यह (कुछ malfomed) प्रश्न के पूरी तरह से सही जवाब है, "मेरे आईपी पते क्या है?"
समस्या यह है कि एकाधिक उस प्रश्न के सही उत्तर हैं।
संपादित करें: getLocalHost
के लिये दस्तावेज कहते हैं:
अगर वहाँ एक सुरक्षा प्रबंधक है, इसका checkConnect विधि स्थानीय होस्ट नाम के साथ कहा जाता है और -1 अपने तर्क के रूप में अगर ऑपरेशन है को देखने के लिए की अनुमति है। यदि ऑपरेशन की अनुमति नहीं है, तो का प्रतिनिधित्व करने वाला एक इनडेट एड्रेस लूपबैक पता लौटा दिया जाता है।
क्या यह संभव है कि व्यवहार में परिवर्तन अनुमतियों में बदलाव के कारण है?
संपादित करें: मेरा मानना है कि NetworkInterface.getNetworkInterfaces
आपको सभी संभावनाओं को समझने की आवश्यकता है। यहाँ एक उदाहरण है जो आभासी पतों प्रदर्शित नहीं करता है, लेकिन "मुख्य" इंटरफेस के लिए काम करता है:
import java.net.*;
import java.util.*;
public class Test
{
public static void main(String[] args)
throws Exception // Just for simplicity
{
for (Enumeration<NetworkInterface> ifaces =
NetworkInterface.getNetworkInterfaces();
ifaces.hasMoreElements();)
{
NetworkInterface iface = ifaces.nextElement();
System.out.println(iface.getName() + ":");
for (Enumeration<InetAddress> addresses =
iface.getInetAddresses();
addresses.hasMoreElements();)
{
InetAddress address = addresses.nextElement();
System.out.println(" " + address);
}
}
}
}
(मैं भूल गया था कितना भयंकर Enumeration<T>
प्रकार सीधे के साथ काम करने है!)
यहाँ अभी अपने लैपटॉप पर परिणाम:
lo:
/127.0.0.1
eth0:
/169.254.148.66
eth1:
eth2:
ppp0:
/10.54.251.111
(मुझे लगता है कि नहीं लगता कि दूर किसी भी बेहद संवेदनशील जानकारी :)
दे रहा है
यदि आप जानते हैं कि आप किस नेटवर्क इंटरफ़ेस का उपयोग करना चाहते हैं, तो NetworkInterface.getByName(...)
पर कॉल करें और फिर उस इंटरफ़ेस के लिए पते देखें (जैसा ऊपर दिए गए कोड में दिखाया गया है)।
स्रोत
2009-06-30 06:38:37
उपरोक्त लूप में, आप नेटवर्कइंटरफेस # isLoopback() की जांच करके लूपबैक को भी छोड़ सकते हैं। – omerkudat
आईपी पते से पहले एक स्लैश क्यों है? –
@ Matías यह एक इंटएड्रेस ऑब्जेक्ट का पता लगाने का जावा टूस्ट्रिंग है। DotHostAddress() केवल डॉट-अलग संख्या प्राप्त करने के लिए। –