Re[6]: WSAAsyncGetHostByName
От: Barkulab Россия  
Дата: 22.08.12 14:09
Оценка: -1
Здравствуйте, dogonthesun, Вы писали:

D>HANDLE – не счетчик.


Ну как же не счетчик?
HANDLE возвращаемый WSAAsyncGetHostByName() представляет собой числовой идентификатор.
При каждом успешном вызове идентификатор на 1 больше предыдущего.
Я вызываю WSAAsyncGetHostByName() в одной функции, после ее завершения WindowProc обрабатывает все ее успешные вызовы,
передавая в качестве параметров те же самые идентификаторы (wParam == HANDLE).

При первом запуске все идентификаторы (HANDLE) абсолютно совпадают по номерам со списком компьютеров из NetServerEnum().
При повторном идентификаторы продолжают увеличиваться на 1.
Я нашел способ сброса только полным закрытием WINSOCK --> WSACleanup() и затем повторной инициализацией WSAStartup().
Но это совсем не разумный способ, я ищу способ сброса счетчика не закрывая WINSOCK.

Или же, подскажите как быстро опросить компьютер зная его имя в сети и получить IP адрес.
Мне главное избежать тормозов когда компьютер не в сети.
gethostbyname() тормозит, getaddrinfo()/getnameinfo() тоже.
А WSAAsyncGetHostByName() не тормозит вообще, если комп не в сети просто возвращает ошибку #11001 моментально (несколько милисекунд).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.