Java - Получить IP-адрес по имени DNS (?) - PullRequest
4 голосов
/ 15 декабря 2011

Моя проблема заключается в следующем:

У меня есть Java-программа, сервер, который ожидает TCP-соединений от клиентов.Дело в том, что IP-адрес, который сервер использует для ожидания соединений, может со временем меняться ... Поэтому я хочу, чтобы клиенты могли каким-то образом получить этот адрес.Я думаю, что мне нужно настроить DNS-сервер, но я не знаю точно, как.Если есть такой сервис бесплатно и т.д ...

Так что я думаю, тогда он будет работать так: сервер при запуске получает свой IP.Затем получите доступ к какой-либо службе DNS (?), Чтобы сделать этот IP доступным.Затем клиенты создают что-то вроде getByName и видят, какой IP-адрес сервера используется для установления соединения.
это будет так?Если так, как это на коде сервера Java, и какую службу DNS я могу использовать (и как это настроить?)

Ответы [ 2 ]

3 голосов
/ 15 декабря 2011

Если ваше Java-приложение работает на компьютере, подключенном к Интернету, оно уже имеет доступную службу DNS и уже имеет хотя бы один IP-адрес, видимый для других компьютеров в вашей локальной сети.Используйте код Java, подобный тому, что я написал ниже, чтобы получить IP-адрес.

import java.net.*;
import java.io.*;

public class Ip {
  public static void main ( String[] args ) throws IOException {
    String hostname = args[0];

    try {
      InetAddress ipaddress = InetAddress.getByName(hostname);
      System.out.println("IP address: " + ipaddress.getHostAddress());
    } catch ( UnknownHostException e ) {
      System.out.println("Could not find IP address for: " + hostname);
    }
  }
}

PS.если IP-адрес компьютера, на котором вы запускаете приложение Java-сервера, меняется (он работает на домашнем компьютере, а Интернет-провайдер назначает динамический IP-адрес), используйте бесплатный сервис, такой как http://www.dyndns.com или аналогичный.В этом случае это немного усложняется, потому что вы должны сообщить вашему динамическому DNS об изменении IP.Некоторые маршрутизаторы имеют встроенную функцию, некоторые нет.В этом случае вы должны убедиться, что dynamicDNS информирован.В Интернете есть множество сценариев, которые делают это для вас (обычно для Linux / UNIX), и есть несколько бесплатных инструментов для Windows.Я никогда не делал этого на Windows, но я сделал это с Linux, и это прекрасно работает.

0 голосов
/ 15 декабря 2011

Обычно клиенты должны подключаться к серверу по DNS, а не по IP. Просто настройте своих клиентов для подключения к example.com и настройте DNS-имя example.com, чтобы оно указывало на ваш IP-адрес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...