Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > AddIPAddress()


Автор: btrfly 9.4.2008, 00:37
Пытаюсь добавить новый адрес,ничего не получается,как и удалить.
Мои действия:
Код

    ULONG iContext,iInst;
    int iErr;
    DWORD iIndex;
    char sNewAddr[20],sNewMask[20];
    cin  >> iIndex;     //индекс адаптера
    cin  >> sNewAddr;    //IP
    cin  >> sNewMask;   //маска
    iErr=AddIPAddress(inet_addr(sNewAddr),inet_addr(sNewMask),iIndex,&iContext,&iInst);//собственно попытка добавить

индекс адаптера 131075
далее вожу айпи,например 78.37.231.49
маска - 255.255.255.255
функция возвращает ERROR_INVALID_PARAMETER
сижу уже не первый день ломаю голову,какой тут параметр не понравился?
Ну вот,вроде все сказал.
 smile 

Автор: korian 9.4.2008, 01:36
ERROR_INVALID_PARAMETER
 One or more of the parameters is invalid. This error is returned if the NTEContext or NTEInstance parameters are NULL. This error is also returned when the IP address specified in the Address parameter is inconsistent with the interface index specified in the IfIndex parameter (for example, a loopback address on a non-loopback interface).

если я правильно это понял, то в вашем случае non-loopback interface и маска не может быть 255.255.255.255.

Автор: btrfly 9.4.2008, 01:47
мсдн я посещаю чаще всего;)
for example, a loopback address on a non-loopback interface
только вот что это означает,я так и не смог понять((

Цитата(korian @  9.4.2008,  01:36 Найти цитируемый пост)
маска не может быть 255.255.255.255.

 smile 
а какая она может быть?
Когда юзаю GetAdaptersInfo()
мне возвращается такое значение

Автор: korian 9.4.2008, 03:05
255.255.255.255 - это loopback, т.к. в такой сети один компьютер.

Цитата(btrfly @  9.4.2008,  00:47 Найти цитируемый пост)
а какая она может быть?

любой, начиная с 0.0.0.0 и устанавливая по единички со старшего бита, т.е. вариантов всего 32.
поидее, интерфейс может вообще не позволять добавлять IP адреса...
если маска, например, 255.255.255.0 не прокатит, то имху вообще нельзя...
а так, самый простой вариант проверить почему не добавляется - попробывать добавить такой адрес руками через гуи =) там все и расскажут, почему да что не так.

Автор: btrfly 9.4.2008, 03:15
Цитата(korian @  9.4.2008,  03:05 Найти цитируемый пост)
устанавливая по единички со старшего бита, т.е. вариантов всего 32.

извиняюсь за тупость,но ниче не понял))

Автор: korian 9.4.2008, 03:16
Цитата(btrfly @  9.4.2008,  00:47 Найти цитируемый пост)
Когда юзаю GetAdaptersInfo()

шо-то я маски в структуре IP_ADAPTER_INFO вообще не нашел.

Добавлено @ 03:18
Цитата(btrfly @  9.4.2008,  02:15 Найти цитируемый пост)
извиняюсь за тупость,но ниче не понял)) 

та тут скорее за разьяснения надо извиняться  smile 

в бинарном виде это будет выглядеть так:
вариант 1)00000000.00000000.00000000.00000000
2)10000000.00000000.00000000.00000000
3)11000000.00000000.00000000.00000000
4)11100000.00000000.00000000.00000000
...
32)11111111.11111111.11111111.11111111 


Автор: btrfly 9.4.2008, 03:40
Цитата(korian @  9.4.2008,  03:16 Найти цитируемый пост)
шо-то я маски в структуре IP_ADAPTER_INFO вообще не нашел.

в структуре IP_ADDR_STRING

Цитата(korian @  9.4.2008,  03:16 Найти цитируемый пост)
32)11111111.11111111.11111111.11111111 

говорили что не может быть 255.255.255.255
а это что тогда?)

Автор: korian 9.4.2008, 04:26
я всего лишь говорил, что добавлять IP адрес с маской 255.255.255.255 в интерфейс, который "non-loopback interface" - нельзя, т.к. такая маска подразумивает loopback.

если я правильно понял, то ваш интерфейс - это P2P интерфейс, и вроде в него нельзя добавлять адреса (покрайней мере гуи такой возможности не предоставляет для P2P, в отличае от того же etherneta)
и добавлять адреса с маской 255.255.255.255 кроме как в интерфейс
0x1 ........................... MS TCP Loopback interface
вообще поидее нету смысла.

Автор: btrfly 9.4.2008, 04:44
Цитата(korian @  9.4.2008,  04:26 Найти цитируемый пост)
это P2P интерфейс

это че за зверь такой? smile 

Автор: btrfly 9.4.2008, 16:11
Все получилось добавить адрес,
все было из-за маски 
поставил 255.255.255.240 все добавилось,
только один фиг не понятно почему там не работало,а так работает smile 

Следующая проблема,теперь не могу удалить адрес smile 

Код

char Context[20];
cin >> Context;
DeleteIPAddress((ULONG)Context);


щас посмотрю какую ошибку возвращает

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)