crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Внутренний IP, QNetworkInterface или что-то другое?
bigory
  опции профиля:
сообщение 17.10.2010, 13:53
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 10.10.2010
Пользователь №: 2099

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем доброе время суток!
Вот есть код, который определяет внутренний IP:

    QString ipAddress;
    QList<QHostAddress> ipAddressesList = QNetworkInterface::allAddresses();
    for (int i = 0; i < ipAddressesList.size(); ++i) {
        if (ipAddressesList.at(i) != QHostAddress::LocalHost &&
            ipAddressesList.at(i).toIPv4Address()) {
            ipAddress = ipAddressesList.at(i).toString();
            break;
        }
    }
    ui->label_2->setText(ipAddress);


Проблема в том, что не везде он определяет его правильно. У меня Win XP SP3, оператор Стрим. У меня определяет правильно, а вот посылаю на тест другим людям, у которых другой оператор, другие версии виндоуса, так они говорят что у них внутренний IP определяется неправильно. Есть ли другой способ определить внутренний IP? Очень желательно, чтоб он определялся правильно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Sokoloff
  опции профиля:
сообщение 21.10.2010, 11:22
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


На мой взгляд сама постановка вопроса не верная или не понятна. Что такое "локальный IP", локальный относительно чего? Если не смотрящий в инет, то у машины может быть таких интерфейсов/адресов несколько.
Поясни для чего это нужно? Если чтоб отправить адрес на какой-то сервер, чтоб потом он смог связаться с клиентом, то нужно искать адрес из той же подсети что и адрес сервера. Например:

Сервер имеет IP 192.168.77.10 и маску 255.255.255.0

Клиент имеет следующие IP
192.168.1.5
91.76.134.250
192.168.77.1
192.168.38.1
127.0.0.1

Перебираем все эти адреса и сравниваем с адресом сервера с учетом маски, в данном случае подойдет только 192.168.77.1 . Надо продумать что делать в исключительных вариантах:
1) Может оказаться что ни один адрес не подошел под маску, т.е. нет прямого маршрута от сервера к клиенту. Что делать?
2) Под маску могут подпасть сразу несколько адресов, комп имеет несколько сетевых карт в одну подсеть, или для для одной карточки установлено несколько адресов. Что делать, брать первый попавшийся?

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

Сообщение отредактировал Sokoloff - 21.10.2010, 11:23
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- bigory   Внутренний IP   17.10.2010, 13:53
- - ufna   а разве внутренний айпи это последний из списка вс...   17.10.2010, 14:14
- - bigory   Скажу честно, не знаю, этот кусок взял готовый. Не...   17.10.2010, 14:29
- - ufna   Она не то, что настроена - тут логики нет для данн...   17.10.2010, 14:33
- - bigory   Внутренний IP подразумевается постоянный IP в лока...   17.10.2010, 14:46
- - ufna   а что выдает у юзеров других? может у них больше,...   17.10.2010, 15:47
- - bigory   Написал я прогу Тест_IP #include "mainwindow....   17.10.2010, 16:19
- - ufna   Не знаю почему у друга твоего еще и МАС-адреса выв...   17.10.2010, 17:00
|- - BRE   Цитата(ufna @ 17.10.2010, 18:00) Не знаю ...   17.10.2010, 17:09
|- - ufna   Цитата(BRE @ 17.10.2010, 18:09) Это не MA...   17.10.2010, 18:06
- - bigory   Вот тут и интересно, что та программа, которая пре...   17.10.2010, 17:21
- - bigory   Цитата(ufna @ 17.10.2010, 19:06) а ты уве...   17.10.2010, 18:14
|- - ufna   Цитата(bigory @ 17.10.2010, 19:14) Уверен...   18.10.2010, 18:04
- - bigory   Вот ссылка на архив http://file.qip.ru/file/V9WGC9...   18.10.2010, 20:13
- - ufna   ну у меня айпи в списке нужный есть, в середине, т...   18.10.2010, 21:55
- - bigory   Я немного дополнил мою программку. Там я оставил с...   18.10.2010, 22:18
- - ufna   блин первое что тебе нужно сделать - определить ...   18.10.2010, 22:29
- - Litkevich Yuriy   Цитата(ufna @ 19.10.2010, 1:29) Все три р...   19.10.2010, 8:52
- - Sokoloff   На мой взгляд сама постановка вопроса не верная ил...   21.10.2010, 11:22


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.4.2024, 22:27