2016-09-07 4 views
0

Я изучаю Программу Socket сейчас, и я столкнулся с некоторой проблемой, когда хочу получить имена хостов из нескольких IP-адресов, мне удалось получить один, но мне нужно получить от нескольких ip-адресов, например 2. Это мой код :Как получить имя хоста из нескольких IP-адресов? Java

package sample.weblog; 
import java.io.*; 
import java.net.*; 
public class SampleWeblog { 

public static void main(String[] args) throws FileNotFoundException, IOException { 
    String ip = null; 
    String theRest = null; 
    String entry = null; 
    int index = 0; 

     FileInputStream fin = new FileInputStream("f:/file1.txt"); 
     Reader in = new InputStreamReader(fin); 
     BufferedReader bin = new BufferedReader(in); 

     for (entry = bin.readLine();entry != null;entry=bin.readLine()){ 
     InetAddress address = InetAddress.getByName(entry); 
     System.out.println(address.getHostName() + " = " + entry); 
     } 
} 
} 

Я ввести некоторые IP-адреса в текстовый файл, например, 8.8.8.8 и 208.65.153.238, который Google и YouTube. Но тогда результат я получаю так:

output

Почему второй адрес IP не получить имя хоста? Спасибо.

+0

Используйте класс сканера вместо буферизованного считывателя. –

+0

@GovindMadhu Эй У меня есть моя проблема, по-видимому, мой IP-адрес не прав, я перехожу на yahoo, и это сработало. Спасибо за ваш комментарий! –

+0

@GovindMadhu Почему? Укажите свою причину. И что это касается вопроса? Для простого чтения строк достаточно BufferedReader.readLine() ', вероятно, предпочтительнее в этом случае. – EJP

ответ

0

getHostName выполняет обратный поиск имени. Для этого он должен запросить службу в Интернете (DNS), чтобы получить имя, если оно существует. В некоторых случаях поиск будет терпеть неудачу, потому что обратный поиск никогда не был настроен владельцем адреса, в других случаях не будет имени хоста для данного адреса.

Для получения дополнительной информации вы можете ознакомиться с поиском обратного имени DNS.

Смежные вопросы