2012-10-18 10 views
13

Mam pakiet zmiennych typu DatagramPacket. Choć packet.getAddress().toString() skutkuje String reprezentujący adresu IP, to ma dodatkowy / dołączany do początku łańcucha:Funkcja InetAddress.toString() zwraca ukośnik w przód

/127.0.0.1 

mogę łatwo usunąć wiodącą '/', ale czy jest lepszy sposób, aby po prostu uzyskanie łańcuchowa reprezentacja adresu IP? Martwię się, bo co, jeśli w innych sytuacjach będzie więcej '/'.

Dzięki!

Odpowiedz

18

użyć następujących:

packet.getAddress().getHostAddress() 

Z documentation:

Zwraca ciąg adresów IP w prezentacji tekstowej.

Kontrast że z InetAddress.toString():

Przekształca ten adres IP do String. Zwrócony łańcuch ma postać: nazwa hosta/literalny adres IP. Jeśli nazwa hosta jest nierozwiązana, nie jest wykonywane wyszukiwanie odwróconej nazwy usługi. Część nazwy hosta będzie reprezentowana przez pusty ciąg znaków.

5

Jeśli chcesz tylko IP, użyj adresu hosta:

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

Jeśli chcesz tylko nazwę hosta, należy

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

Ukośnik widzisz to prawdopodobnie kiedy robisz niejawną metodę toString() na zwróconym adresie InetAdress podczas próby wydrukowania, która drukuje nazwę hosta i adres rozdzielany przez ukośnik (np. stackoverflow.com/64.34.119.12). Można użyć tej metody, ale nie ma żadnego powodu, aby przejść do pośrednika String tutaj. InetAddress powoduje, że oba pola są rozdzielone wewnętrznie.

+0

skopiuj stąd: http://stackoverflow.com/questions/7361802/slash-before-inetaddress-getbynamehost –