2012-10-18 13 views
13

देता है मेरे पास DatagramPacket प्रकार का एक वैरिएबल पैकेट है। जबकि packet.getAddress().toString() परिणाम एक स्ट्रिंग में एक आईपी पता का प्रतिनिधित्व करने, यह एक अतिरिक्त / स्ट्रिंग की शुरुआत के साथ जोड़ दिया गया है:InetAddress.toString() एक फॉरवर्ड स्लैश

/127.0.0.1 

मैं आसानी से अग्रणी '/' निकाल सकते हैं, लेकिन वहाँ एक बेहतर तरीका सिर्फ एक प्राप्त करने के लिए है आईपी ​​का स्ट्रिंग प्रतिनिधित्व? मुझे चिंता है क्योंकि अगर अन्य स्थितियों में '/' अधिक हैं तो क्या होगा।

धन्यवाद!

उत्तर

18

उपयोग निम्नलिखित:

packet.getAddress().getHostAddress() 

documentation से:

शाब्दिक प्रस्तुति में आईपी पते स्ट्रिंग देता है।

कंट्रास्ट कि InetAddress.toString() साथ:

एक String को यह आईपी पते में बदलता है। लौटाई गई स्ट्रिंग फॉर्म का है: होस्टनाम/शाब्दिक आईपी पता। यदि होस्ट नाम अनसुलझा है, तो कोई रिवर्स नाम सेवा लुकअप नहीं किया जाता है। होस्टनाम भाग को खाली स्ट्रिंग द्वारा दर्शाया जाएगा।

5

तुम सिर्फ आईपी चाहते हैं, मेजबान पते का उपयोग करें:

String address = InetAddress.getByName("stackoverflow.com").getHostAddress(); 

तुम सिर्फ होस्ट नाम चाहते हैं,

String hostname = InetAddress.getByName("stackoverflow.com").getHostName(); 

का उपयोग स्लेश आप देख रहे हैं शायद जब है जब आप इसे प्रिंट करने का प्रयास करते हैं तो आप लौटाए गए InetAddress पर एक अंतर्निहित toString() करते हैं, जो होस्ट स्लैश (जैसे stackoverflow.com/64.34.119.12) द्वारा सीमित होस्ट नाम और पता मुद्रित करता है। आप

String address = InetAddress.getByName("stackoverflow.com").toString().split("/")[1]; 
String hostname = InetAddress.getByName("stackoverflow.com").toString().split("/")[0]; 

पर उपयोग कर सकते हैं लेकिन यहां स्ट्रिंग मध्यस्थ के पास जाने का कोई कारण नहीं है। InetAddress दो क्षेत्रों को आंतरिक रूप से अलग रखता है।

+0

यहां से कॉपी किया गया: http://stackoverflow.com/questions/7361802/slash-before-inetaddress-getbynamehost –

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