Как узнать Ip полученный после удачного дозвона?
Как узнать IP адрес назначенный при удачном соединении через модем. Если есть хендл подключения HRASCONN. Ну и соответсвенно инфа о соединении (точка входа, модем...)
Так же как и узнать IP полученный любым другим методом. Только все что у вас уже есть нам не потребуется.
Можно пойти 2-мя путями. Путь 1 - вызвать GetAdaptersInfo(...) и путь 2 - gethostname(...) а затем gethostbyname(...). ИМХО первый вариант более предпочтительный.
Можно пойти 2-мя путями. Путь 1 - вызвать GetAdaptersInfo(...) и путь 2 - gethostname(...) а затем gethostbyname(...). ИМХО первый вариант более предпочтительный.
Только проблемка - как определить какой именно адаптер использовался при подключении и какой именно IP этого адаптера является IPшником установившегося подключения?
GetAdaptersInfo возвращает структуру но даже AdapterName в ней - это какойто внутренний ключ адаптера, а не нормальное имя девайса. Никак не пойму как связать информацию из RAS API с IP Helper.
Только проблемка - как определить какой именно адаптер использовался при подключении и какой именно IP этого адаптера является IPшником установившегося подключения?
GetAdaptersInfo возвращает структуру но даже AdapterName в ней - это какойто внутренний ключ адаптера, а не нормальное имя девайса.
Тебе надо поле Description[MAX_ADAPTER_DESCRIPTION_LENGTH] - там он называется по человечески. Если сам ниасилишь, то приду домой - выложу сорец проги, которая считывает инфу о всех подключенных интерфейсах.
Никак не пойму как связать информацию из RAS API с IP Helper.
Решительно не понял проблемы.
то приду домой - выложу сорец проги, которая считывает инфу о всех подключенных интерфейсах.
Спасибо не надо, код данной программы есть у меня от одной книжки ;-) а поле Description содержит совсем другую инфу нежели имя девайся (тама указывается например для любого из моих двух PCI модемов "PPP/SLIP интерфейс адаптер" (как то ~ так, без имени самого модема)
Спасибо не надо, код данной программы есть у меня от одной книжки ;-) а поле Description содержит совсем другую инфу нежели имя девайся (тама указывается например для любого из моих двух PCI модемов "PPP/SLIP интерфейс адаптер" (как то ~ так, без имени самого модема)
Что то я тогда не понимаю, что тебе надо. У тебя же есть HRASCONN. Ты вроде как сам запустил подключение. Т.е. должен знать, что случилось в Датском королевстве :)
Если ты хочешь получить именно название модема, а не его имя (это разные вещи), то тут уже надо ковырять в сторону перечисления устройств. А это в район драйверов надо загребать. Т.е. мне просто так например лень (а главное - нету времени) с этим ковыряться. Сам если найдешь и расскажешь, то буду благодарен - интересно.
"какой именно IP этого адаптера является IPшником установившегося подключения?" все что нашел - всё твое :)
Верно подмечено)) а вот с поиском адаптера остается пробел. Просто в программе после дозвона - надо проверить полученный от сервера IP на оперделенный критерий, и если он ему не соответствует - перезвонить.
Просто в программе после дозвона - надо проверить полученный от сервера IP на оперделенный критерий, и если он ему не соответствует - перезвонить.
Ну так в чем дело? Проверяй. Или думаешь, тебе на один модем выдастся сразу 10 IP адресов? :)
И нафига тебе так важен адаптер? Расскажи маленько, а то мне интересно даже стало.
Ну так в чем дело? Проверяй. Или думаешь, тебе на один модем выдастся сразу 10 IP адресов? :)
И нафига тебе так важен адаптер? Расскажи маленько, а то мне интересно даже стало.
Прям)улыбаюсь))
Нет конечно не 10 IP. Но впринципе 1 сетевой адаптер может иметь несколько IP.
Просто у меня в компе:
- 1 реальная сетевуха
- 1 виртуальная
- 2 модема dial-up
- + еще скрытые системные устройства какието.
Поэтому и надо определить именно тот "сетевой адаптер", который использовался при дозвоне, чтобы с него снимать инфу об IP адресе. А ваще просто закодил дозвонщик с проверкой IP-шника подключения. Чтобы дозванивался исключительно по определенным IP. (это нужно для реализации корыстных целей связанных с работой местного провайдера;-)
Но впринципе 1 сетевой адаптер может иметь несколько IP.
Неужели? Я я думал список адресов в структуре для смеха сделали ;)
Просто у меня в компе:
- 1 реальная сетевуха
- 1 виртуальная
- 2 модема dial-up
- + еще скрытые системные устройства какието.
Поэтому и надо определить именно тот "сетевой адаптер", который использовался при дозвоне, чтобы с него снимать инфу об IP адресе. А ваще просто закодил дозвонщик с проверкой IP-шника подключения. Чтобы дозванивался исключительно по определенным IP. (это нужно для реализации корыстных целей связанных с работой местного провайдера;-)
Блин! У тебя там какой-то дурдом. Дай доступ через радмин, а то нихрена не пойму, что творится. И нафига 2 модема?
Может сделать проще? IP_ADAPTER_INFO имеет поле Type. По нему можно отсеять твои модемы (MIB_IF_TYPE_PPP). Ну а из 2-х адресов уж можно наверное угадать - правильно ты дозвонился, или нет.
Да какой дурдом...нормальный хаус))блин скрин диспетчера устройств прикрепить не удалось((
а 2 модема, потому что один был, а один потом на халяву достался (+ в XP SP2 2ой дозванивается лучше до провайдера по определенным номерам)
Может сделать проще? IP_ADAPTER_INFO имеет поле Type. По нему можно отсеять твои модемы (MIB_IF_TYPE_PPP). Ну а из 2-х адресов уж можно наверное угадать - правильно ты дозвонился, или нет.
А, впринципе, я так и делаю - сначала по типу отсеиваю MIB_IF_TYPE_PPP. А потом IP проверяю (первые числа IP мне известны). Просто все равно получается способ какой то кривоватый.
Да какой дурдом...нормальный хаус))блин скрин диспетчера устройств прикрепить не удалось((
а 2 модема, потому что один был, а один потом на халяву достался
Ну это как у меня :) У меня в компе 3 сетевых карточки торчит и в принципе то же 2 модема есть, только они внешние. 1 - дата-кабель от телефона, а второй - реальный внешний модем зюхелевский.
А, впринципе, я так и делаю - сначала по типу отсеиваю MIB_IF_TYPE_PPP. А потом IP проверяю (первые числа IP мне известны). Просто все равно получается способ какой то кривоватый.
Как сделать более прямо я тебе уже сказал. Заняться перечислением девайсов что бы по имени вычислить твой модем. Только это ой какой загадочный путь... Так что видимо придется пока так.
С Новым Годом товарищи!
РЖУ... RasGetProjectionInfo - Рулезз!!!
Ну вот видишь, как всегда - все не так сложно как казалось бы... :)
Приведи пример кода что ли... Раз уж разобрался - поделись с другими.
Приведи пример кода что ли... Раз уж разобрался - поделись с другими.
Всё просто, после дозвона
DWORD dwSize;
dwSize = sizeof(RASPPPIP);
RasIP.dwSize = dwSize;
DWORD dwRet = RasGetProjectionInfo(m_lphRasConn, RASP_PppIp, &RasIP, &dwSize);
if (0 == dwRet)
{
//Проверка IP, например
if (('1' == RasIP.szIpAddress[0])
&& ('9' == RasIP.szIpAddress[1])
&& ('2' == RasIP.szIpAddress[2])
&& ('.' == RasIP.szIpAddress[2]))
{
//IP начинается на 192.
}
//...
}
if (('1' == RasIP.szIpAddress[0])
&& ('9' == RasIP.szIpAddress[1])
&& ('2' == RasIP.szIpAddress[2])
&& ('.' == RasIP.szIpAddress[2]))
ИМХО лучше использовать стандартные библиотечные функции и поменять неколько условий на одно:
{
//то делаем, что нам нужно
}