а вообще у меня на С++ все пашет, единственная проблема в ХР - при множественном одновременном вызове gethostbyaddr из разных потоков результаты путаются Ж(. (Мот патчи какие это правят)
След.код вызывает фн. gethostbyname.
Данный вызов рабоатет на ВСЕХ ОС, кроме XP
На XP в самой функции происходит ошибка.
lea esi, [Computer] ; \\Computer
; initialisation
push esi
push offset pWSA_struc
push dword ptr 0101h
call WSAStartup
pop esi
inc esi
inc esi
push esi
call gethostbyname ; Данный вызов НЕ РАБОТАЕТ на XP
; в MSDN говорят, что все должно быть ок
cmp eax, 0
je err
; ok
----------
Данный вызов рабоатет на ВСЕХ ОС, кроме XP
Вопрос 1: Как сделать, чтобы работало на XP ?
Вопрос 2: Какой можно использовать аналог данной функции для получения IP удаленной машины?
Спасибо
А вы товарищ извращенец на асме под вынь...11.12.02 07:43 Автор: Killer{R} <Dmitry> Статус: Elderman
а вообще у меня на С++ все пашет, единственная проблема в ХР - при множественном одновременном вызове gethostbyaddr из разных потоков результаты путаются Ж(. (Мот патчи какие это правят)
[Net] Решение найдено ... может кто-то уже сталкивался с подобным.11.12.02 14:29 Автор: white Статус: Незарегистрированный пользователь
> а вообще у меня на С++ все пашет, единственная проблема в > ХР - при множественном одновременном вызове gethostbyaddr > из разных потоков результаты путаются Ж(. (Мот патчи какие > это правят)
Сейчас у меня тоже все пашет. Но косяк все равно имел место быть. Ситуация была в том, что после этого вызова я обращался по нулевосму адресу, а int3 поставил после вызова hethostbyname, но до int3, и когда я нажимал F5, то по идее я ожидал, что сразу после вызова вылетит int3, т.е. ошибок в принципе не должно было быть. Но в винде, видимо, встроены какие-то средства исполнения (просмотра, @#$ знает) дальнейшего алгоритма - в результате у меня нахрен все вылетало, и мне казалось что gethosybyname не возвращает управление.
Код этого всего можно представить в виде след:
<...>
call gethostbyname ; здесь я нажимал F5 (в SI)
int3 ; управление уже не получал
xor edi, edi
mov eax, dword ptr [edi] ; Ошибка доступа
Но если в том же коде вставить ret после вызова int3 - то все работает нормально.
А у тебя случайно не многопроцессораня система или процессор с HyperThreading?11.12.02 19:53 Автор: Killer{R} <Dmitry> Статус: Elderman