Android: использование разрешенного IP-адреса вместо имени хоста - PullRequest
0 голосов
/ 17 июня 2011

Я хотел бы использовать разрешенный IP-адрес для подключения к серверу вместо имени хоста.Вот мои фрагменты кода:

     // Get domain name from URL
    String domainName = url.substring("http://".length(),
            url.indexOf("/", 8));
    // Get IP address as string
    InetAddress inet = null;
    try {
        inet = InetAddress.getByName(domainName);
    } catch (UnknownHostException e) {
        Log.i(TAG, "The IP address cannot be resolved for " + domainName);
    }
        resolvedIP = inet.getHostAddress(); 

Здесь я могу успешно получить IP-адрес.Теперь я пытаюсь заменить свой URL, как показано ниже:

url = url.replace(domainName, resolvedIP);

Now I connect to server:
URL download = new URL(url);


conn = (HttpURLConnection) url.openConnection();

conn.getInputStream(); //Throws IO Exception

Я могу успешно подключиться, если я использую URL как есть (без замены имени домена на IP-адрес).

Пожалуйстадайте мне знать, если я все делаю правильно.

Ответы [ 2 ]

2 голосов
/ 17 июня 2011

Как правило, попробуйте использовать URL на основе имени хоста.Нередко несколько веб-сайтов имеют один и тот же IP-адрес, отличающийся только именем сайта (так называемый виртуальный хостинг).То, что вы делаете, будет работать только в том случае, когда на данном IP-адресе есть один сайт.

Для балансировщиков нагрузки довольно свойственно иметь один IP-адрес для каждого «сайта», который он уравновешивает, но все еще нетгарантировать, что вы будете подключаться к одному и тому же бэкэнду для двух последовательных запросов.Тем не менее, существуют веб-балансировщики нагрузки, которые расширяют использование виртуального хостинга до уровня балансировки нагрузки.

Я бы просто попытался приостановить загрузку по URL-адресу на основе имени хоста.

0 голосов
/ 17 июня 2011

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

Это не требует изменений в вашем приложении.

...