Как использовать CIPAddressCtrl::GetAddress?
От: live7  
Дата: 24.07.02 06:02
Оценка:
Не могу понять как use-ать CIPAddressCtrl::GetAddress.
Прошу помочь в постижении этой функции.
Как создавать CIPAddressCtrl объект и как его использовать.
Пожалуйста разъясните на примере как это работает от начала и до конца.

Re: Как использовать CIPAddressCtrl::GetAddress?
От: Аноним  
Дата: 24.07.02 06:21
Оценка:
Здравствуйте live7, Вы писали:

L>Не могу понять как use-ать CIPAddressCtrl::GetAddress.

L>Прошу помочь в постижении этой функции.
L>Как создавать CIPAddressCtrl объект и как его использовать.
L>Пожалуйста разъясните на примере как это работает от начала и до конца.

L> :???:


Например, рисуешь на диалоше этот контрол, в класс-визарде создаешь для него мембер варайбл, а потом так например:
void CMyDlg::Connect() 
{
    UpdateData();
    addr.sin_family = AF_INET;
    addr.sin_port = htons(m_Port);
    DWORD    address;
    if(m_IP.GetAddress(address)!=4)
    {
        AfxMessageBox("Incorrect IP Address");
        return;
    }
    addr.sin_addr.s_addr = htonl(address);
    addr_len = sizeof(addr);
    m_bConnected = true;
}
Re[2]: Как использовать CIPAddressCtrl::GetAddress?
От: live7  
Дата: 24.07.02 06:44
Оценка:
Спасибо, что кот-то откликнулся.
Мне хотелось бы понять как получить IP в виде int

Я написал так

#include <iostream.h>
#include <stdio.h>
#include <afxcmn.h>
void main( void )
{

typedef unsigned BYTE;
BYTE fld[4];
int numberOfNonBlankFields = CIPAddressCtrl::GetAddress(&fld[0],&fld[1],&fld[2],&fld[3]);

}

а он мне

error C2665: 'GetAddress' : none of the 2 overloads can convert parameter 1 from
type 'unsigned int *'

Как Вы писали нужно создать CIPAddressCtrl objekt и чёто с им сделать..?.!.
Что нужно дописать в прогу чтобы получить IP в int....
Зараннее благодарю!!!
Re[3]: Как использовать CIPAddressCtrl::GetAddress?
От: yogi Россия  
Дата: 24.07.02 07:02
Оценка:
Здравствуйте live7, Вы писали:

L>Спасибо, что кот-то откликнулся.

L>Мне хотелось бы понять как получить IP в виде int

DWORD есть четырехбайтный беззнаковый целый тип. Если у тебя инт тоже 4 байта или более, то делай так:
int IP;
IPCtrl.GetAddress(&IP);
Путь к сердцу женщины лежать не должен.
Re[3]: Как использовать CIPAddressCtrl::GetAddress?
От: yogi Россия  
Дата: 24.07.02 07:08
Оценка:
Здравствуйте live7, Вы писали:

L>Спасибо, что кот-то откликнулся.

L>Мне хотелось бы понять как получить IP в виде int

L>Я написал так


L>#include <iostream.h>

L>#include <stdio.h>
L>#include <afxcmn.h>
L>void main( void )
L>{

L>typedef unsigned BYTE;

L>BYTE fld[4];
L>int numberOfNonBlankFields = CIPAddressCtrl::GetAddress(&fld[0],&fld[1],&fld[2],&fld[3]);

L>}


L>а он мне


L>error C2665: 'GetAddress' : none of the 2 overloads can convert parameter 1 from

L>type 'unsigned int *'

L>Как Вы писали нужно создать CIPAddressCtrl objekt и чёто с им сделать..?.!.

L>Что нужно дописать в прогу чтобы получить IP в int....
L> Зараннее благодарю!!!
L>

Что-то мне кажется ты не до конца ты понимаешь, что такое CIPAddressCtrl. Зачем ты пытаешься вызвать CIPAddressCtrl::GetAddress — это ведь не статическая функция класса? Ты случаем не пыташься таким образом преобразовать 4 байта из записи айпишника в инт?
Путь к сердцу женщины лежать не должен.
Re[4]: Как использовать CIPAddressCtrl::GetAddress?
От: live7  
Дата: 24.07.02 10:14
Оценка:
Не буду прикидываться умным, но я действительно не доконца понимаю, что такое CIPAddressCtrl, вернее почти не понимаю.
Суть проблемы такова: Нужно получить IP aдрес в форме INT для дальнейшего использования, т.е. как-нибудь переслать IP в переменную.
Как это можно сделать?
MSDN тяжко понимается что куда и как,
но там написано, что GetAddress
Retrieves the address values for all four fields in the IP Address Control.
Как оно работает?...
Заранее спасибо...
Re[5]: Как использовать CIPAddressCtrl::GetAddress?
От: yogi Россия  
Дата: 24.07.02 10:37
Оценка:
Здравствуйте live7, Вы писали:

L>Не буду прикидываться умным, но я действительно не доконца понимаю, что такое CIPAddressCtrl, вернее почти не понимаю.

L>Суть проблемы такова: Нужно получить IP aдрес в форме INT для дальнейшего использования, т.е. как-нибудь переслать IP в переменную.
L>Как это можно сделать?
L>MSDN тяжко понимается что куда и как,
L>но там написано, что GetAddress
L>Retrieves the address values for all four fields in the IP Address Control.
L>Как оно работает?...
L>Заранее спасибо...

ОК, постараюсь объяснить.
CIPAddressCtrl — это класс из MFC, соответствующий контролу юзер-интерфейса IP address. Т.е. если у тебя есть хэндл такого контрола, то ты можешь "привязать" этот контрол к своему объекту класса CIPAddressCtrl. Тогда вызвав метод GetAddress ты получишь IP адрес из контрола либо в инт либо в четыре байта.

Насколько я понял у тебя есть какой-нить IP типа "192.168.0.1" и ты хочешь загнать это в инт, так?
unsigned int IP;
IP= 192<<24 | 168<<16 | 0<<8 | 1;


Или я тебя не так понял?
Путь к сердцу женщины лежать не должен.
Re[6]: Как использовать CIPAddressCtrl::GetAddress?
От: live7  
Дата: 24.07.02 10:51
Оценка:
Понял все правильно.

Мне нужно IP в int (Лучше в массив из 4-х элементов), но я не умею работать с CIPAddressCtrl, т.е. не умею ни создавать, ни заполнять, ни.....
Надеюсь это только пока!
Yogi если не трудно покажи как получить IP в удобной форме (массив из 4-х элементов) может есть другие способы, более легкие
Re[7]: Как использовать CIPAddressCtrl::GetAddress?
От: yogi Россия  
Дата: 24.07.02 10:56
Оценка:
Здравствуйте live7, Вы писали:

L>Понял все правильно.


L>Мне нужно IP в int (Лучше в массив из 4-х элементов), но я не умею работать с CIPAddressCtrl, т.е. не умею ни создавать, ни заполнять, ни.....

L>Надеюсь это только пока!
L>Yogi если не трудно покажи как получить IP в удобной форме (массив из 4-х элементов) может есть другие способы, более легкие
L>

Блин, мне не трудно. Я только не пойму как ты его хочешь получить. Ты его хочешь у юзера запросить? Или он у тебя есть в виде строки? Или что?
Путь к сердцу женщины лежать не должен.
Re[8]: Как использовать CIPAddressCtrl::GetAddress?
От: live7  
Дата: 24.07.02 11:04
Оценка:
Только не злись, понимаю с ламерами общаться тяжело.
Начнем с начала--> Есть комп, на нем запускаем это приложение (в котором будет возвращаться IP) и узнаем IP этой самой машины (на которой запускаем прогу)
Re[9]: Как использовать CIPAddressCtrl::GetAddress?
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 24.07.02 11:16
Оценка:
Здравствуйте live7, Вы писали:

L>Только не злись, понимаю с ламерами общаться тяжело.

L>Начнем с начала--> Есть комп, на нем запускаем это приложение (в котором будет возвращаться IP) и узнаем IP этой самой машины (на которой запускаем прогу)


рулез!!! Типа, нужно узнать IP локальной машины, правильно я понял? Тогда почему вопрос про контрол IP Address В общем, про локальный IP тысячу раз пролетала инфа в форумах... Вот кусок кода:



WSADATA  WSAData;
PHOSTENT p;
char Name[256] = {0};
WSAStartup(0x0101, &WSAData);
gethostname(Name, 255);
p = gethostbyname(Name);

      DWORD IP = inet_addr( p->h_addr_list[0] ); // получаем первый IP (хотя их может быть много)


WSACleanup();


Вроде нигде в коде не ошибся
Re[10]: Как использовать CIPAddressCtrl::GetAddress?
От: vladsm Россия  
Дата: 24.07.02 11:23
Оценка:
Здравствуйте Flamer, Вы писали:


F> рулез!!!




F> Вот кусок кода:


Ты еще про библиотечку сказать забыл
Re[10]: Как использовать CIPAddressCtrl::GetAddress?
От: live7  
Дата: 24.07.02 11:30
Оценка:
этоо круто так сразу, а есть стандартные функции для возврата IP локальной машины для VC++.
Re[11]: Как использовать CIPAddressCtrl::GetAddress?
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 24.07.02 11:34
Оценка:
Здравствуйте live7, Вы писали:

L> этоо круто так сразу, а есть стандартные функции для возврата IP локальной машины для VC++.


А чем приведенные мной нестандартные? Это вроде как winsock... Библиотечка есть в Виндах... В приведенном мною коде только две функции платформно-зависимы — это WSAStartup и WSACleanup. А остальное — да хоть под линухом... Единственное — код писал по памяти, поэтому и оговорился, что вроде нигде не ошибся
Re[12]: Как использовать CIPAddressCtrl::GetAddress?
От: live7  
Дата: 24.07.02 11:51
Оценка:
Спасибо, попробую разобраться и применить...
Надеюсь получиться (Я не крутой Волшебник, я только учусь....)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.