вопрос по iphlpapi.dll
От: Аноним  
Дата: 02.05.07 13:19
Оценка:
Есть такая проблема:
Функция запускается в 50 потоках, нормально отрабатывает первые 10-12 а затем возвращяет "хост не найден" для всех последующих, хотя они все присутствуют в сети.
Является ли iphlpapi.dll и приведенный ниже код thread-safe?
если можно ссылочку киньте в подтверждение.

int GetMac(char ip)
{
HRESULT hr;
IPAddr ipAddr;
ULONG pulMac[2];
ULONG ulLen;

ipAddr = inet_addr (ip);
memset (pulMac, 0xff, sizeof (pulMac));
ulLen = 6;

hr = SendARP (ipAddr, 0, pulMac, &ulLen);
printf ("Return %08x, length %8d\n", hr, ulLen);

size_t i, j;
char * szMac = new char[ulLen*3];
PBYTE pbHexMac = (PBYTE) pulMac;

//
// Convert the binary MAC address into human-readable
//
for (i = 0, j = 0; i < ulLen — 1; ++i) {
j += sprintf (szMac + j, "%02X:", pbHexMac[i]);
}

sprintf (szMac + j, "%02X", pbHexMac[i]);
printf ("MAC address %s\n", szMac);

delete [] szMac;

return 0;
}
Re: вопрос по iphlpapi.dll
От: TarasCo  
Дата: 03.05.07 06:19
Оценка:
А>int GetMac(char ip)

Вы передаете в ф. 1 байт, это опечатка?
Да пребудет с тобою сила
Re[2]: вопрос по iphlpapi.dll
От: Аноним  
Дата: 03.05.07 13:51
Оценка:
Здравствуйте, TarasCo, Вы писали:

А>>int GetMac(char ip)


TC>Вы передаете в ф. 1 байт, это опечатка?


ага опечатка, вообще это пример из msdn, я только заменил int __cdecl main() на int GetMac(char[] ip).
а вопрос был про iphlpapi.dll и конкретно SendARP(): есть ли какие проблемы при использовании в многопоточных приложениях?
Re[3]: вопрос по iphlpapi.dll
От: Michael Chelnokov Украина  
Дата: 03.05.07 14:00
Оценка:
Здравствуйте, Аноним, Вы писали:

А>а вопрос был про iphlpapi.dll и конкретно SendARP(): есть ли какие проблемы при использовании в многопоточных приложениях?


Поройтесь на гугле, там действительно были (есть?) какие-то проблемы на эту тему.

P.S. И вообще, кривизна IP Helper library не устает поражать. Ее, похоже, как забангалорили изначально, так там и оставили.
Re[4]: вопрос по iphlpapi.dll
От: Аноним  
Дата: 03.05.07 14:29
Оценка:
Здравствуйте, Michael Chelnokov, Вы писали:

MC>Поройтесь на гугле, там действительно были (есть?) какие-то проблемы на эту тему.


искал, нашел больше вопросов чем ответов.

MC>P.S. И вообще, кривизна IP Helper library не устает поражать. Ее, похоже, как забангалорили изначально, так там и оставили.


есть альтернатива?
как еще можно решить задачу сканирования mac-адресов для большого числа машин в сети >1000?
Re[5]: вопрос по iphlpapi.dll
От: mansur https://netmontools.com
Дата: 04.05.07 06:45
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>как еще можно решить задачу сканирования mac-адресов для большого числа машин в сети >1000?


Предлагаю попробовать http://lookanet.com/download/planetd.exe,
там всё делается одним потоком но без SendArp(). Если отсканирует ~1000 хостов за приемлимое время, возможно найдём решение вашей проблемы.
С уважением mansur.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: вопрос по iphlpapi.dll
От: Аноним  
Дата: 04.05.07 13:54
Оценка:
Сканировать надо по списку доменных имен.
Сначала определяем IP ф-ей gethostbyname() затем MAC SendARP(), если делать одним потоком это занимает от 20 до 50 мин.
теперь подозреваю что проблема в все таки в gethostbyname() и DHCP сервере.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.