Whois в Java для Android - PullRequest
       2

Whois в Java для Android

0 голосов
/ 02 февраля 2012

Я делаю Whois в Java для Android, чтобы тренироваться о потоках и TCP-соединениях.

Но у меня есть проблема.У меня есть PHP-скрипт, я написал некоторое время назад, и я пытаюсь сделать то же самое в Java.

это мой код Java:

 public String consultawhois(String domain,String tld)
    {
        String domquest = domain + "." + tld;
        String resultado = "";
        Socket theSocket;
        String hostname = "whois.internic.net";
        int port = 43;
        try {
          theSocket = new Socket(hostname, port, true);
          Writer out = new OutputStreamWriter(theSocket.getOutputStream());
          out.write(domquest + "\r\n");
          out.flush();
          DataInputStream theWhoisStream;
          theWhoisStream = new DataInputStream(theSocket.getInputStream());
          String s;
          while ((s = theWhoisStream.readLine()) != null) {
            resultado = resultado + s + "\n";
          }
        }
        catch (IOException e) {
        }

        return resultado;
    }

Ответ серверане правильно, и я думаю, что проблема в том, что я посылаю неверный запрос.Я отправляю запрос "dominio.com \ r \ n", и в моем php-коде whois он отлично работает.

Ответы [ 2 ]

3 голосов
/ 02 февраля 2012

Похоже, что DNS-запрос совпадает с несколькими записями.По крайней мере, так я интерпретирую ответ.В ответном ответе вы должны увидеть следующую строку:

Чтобы выделить одну запись, найдите ее с "xxx", где xxx - одна из записей, показанных выше.Если записи одинаковы, найдите их с "= xxx", чтобы получить полное отображение для каждой записи.

Так что, если вы добавляете запрос с "=", он возвращает данные этой записитолько.Следующее сработало для меня.

public String consultawhois(String domain,String tld)
{
    String domquest = domain + "." + tld;
    String resultado = "";
    Socket theSocket;
    String hostname = "whois.internic.net";
    int port = 43;
    try {
      theSocket = new Socket(hostname, port, true);
      Writer out = new OutputStreamWriter(theSocket.getOutputStream());
      out.write("="+domquest + "\r\n");
      out.flush();
      DataInputStream theWhoisStream;
      theWhoisStream = new DataInputStream(theSocket.getInputStream());
      String s;
      while ((s = theWhoisStream.readLine()) != null) {
        resultado = resultado + s + "\n";
      }
    }
    catch (IOException e) {
    }

    return resultado;
}

Стоит учесть одну вещь: использовать английский для имен методов, переменных и т. Д. Вместо испанского.Это сделает ваш код легче читать на международном уровне.Сам язык программирования также использует английские слова.Старайтесь избегать странного сочетания английского и вашего родного языка.

0 голосов
/ 02 февраля 2012

В результате поиска dominio.com найдено три совпадения:

  • DOMINIO.COM.BR
  • DOMINIO.COM.ASCPROBIENESTARIDSS.COM
  • DOMINIO.COM

Вы должны указать интересующий вас вопрос.

=dominio.com<newline>

Это всегда будет работать, даже если нет совпадений.

...