crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Внутренний 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? Очень желательно, чтоб он определялся правильно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 17.10.2010, 14:14
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

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




Репутация:   5  


а разве внутренний айпи это последний из списка всех айпи, не равный ЛокалХосту?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bigory
  опции профиля:
сообщение 17.10.2010, 14:29
Сообщение #3


Студент
*

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

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




Репутация:   0  


Скажу честно, не знаю, этот кусок взял готовый. Неправильно построена логика?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 17.10.2010, 14:33
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

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




Репутация:   5  


Она не то, что настроена - тут логики нет для данного сабжа :))

Я не очень понимаю что есть "внутренний айпи", но данный код его точно не находит - он же просто перебирает все возможные "не локалхост" и выводит последний из них.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bigory
  опции профиля:
сообщение 17.10.2010, 14:46
Сообщение #5


Студент
*

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

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




Репутация:   0  


Внутренний IP подразумевается постоянный IP в локальной сети. А как правиль надо было написать код? Я нре могу экспериментировать, так как у меня что неправильно, что правильно все равно выводит правильный IP, то есть я не смогу проконтролировать. Нужно пробовать в другой сети, но у меня физически такой возможности нет
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 17.10.2010, 15:47
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

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




Репутация:   5  


а что выдает у юзеров других?

может у них больше, чем один интерфейс?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bigory
  опции профиля:
сообщение 17.10.2010, 16:19
Сообщение #7


Студент
*

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

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




Репутация:   0  


Написал я прогу Тест_IP

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtGui>
#include <QtNetwork>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QString ipAddress;
    QList<QHostAddress> ipAddressesList = QNetworkInterface::allAddresses();
    for (int i = 0; i < ipAddressesList.size(); ++i){
            ipAddress = ipAddressesList.at(i).toString();
            ui->textBrowser->append(ipAddress);
        }
}


MainWindow::~MainWindow()
{
    delete ui;
}


И вот что выводит:
Мой            Друга
192.168.1.5    FE80:0:0:0:A058:B12B:6661:ABB1
91.76.134.250    169.254.171.177
192.168.77.1    FE80:0:0:0:74D3019:B3C7:590F
192.168.38.1    192.168.0.199
127.0.0.1        0:0:0:0:0:0:0:1
                127.0.0.1
                FE80:0:0:0:0:5EFE:C0A8:C7
                2001:0:5EF5:79FD:3084:135:A81B:967C
                FE80:0:0:0:3084:135:A81B:967C


Самое интересное это то, что у меня отобразился и внутренний и внешний, у друга внутренний, и то по номеру строки не совпадает с моей
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 17.10.2010, 17:00
Сообщение #8


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

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




Репутация:   5  


Не знаю почему у друга твоего еще и МАС-адреса вывелись, но вопрос то в другом - вот у тебя пять айпи адресов, один из которых - локалхост. Вопрос - как определить, который ты надо?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 17.10.2010, 17:09
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

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




Репутация:   44  


Цитата(ufna @ 17.10.2010, 18:00) *
Не знаю почему у друга твоего еще и МАС-адреса вывелись...

Это не MAC-адреса, это IPv6.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bigory
  опции профиля:
сообщение 17.10.2010, 17:21
Сообщение #10


Студент
*

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

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




Репутация:   0  


Вот тут и интересно, что та программа, которая представлена в демо, кусок кода которой я написал, у меня выводит правильно, но вот у друга не то что надо, хотя он в списке тоже присутствует.
Вот с внешним IP я решил проблему через PHP скрипт, который предложили в одном из топике. Он как раз и у меня и у друга выводится правильно, не смотря на то, что в списке у друга нет этого IP.
Наверно все же есть какой-то закон по которому можно найти свой внутренний IP. Но вопрос, какой???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 24.10.2021, 21:26