Показать сообщение отдельно

  #567  
Старый 22.08.2009, 21:33
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


По умолчанию

насчет пинга вот код который я юзал -
Код:
 ; необходимые структуры
struct IP_OPTION_INFORMATION
  Ttl db 0
  Tos db 0
  Flags db 0
  OptionsSize db 0
  OptionsData dd 0
ends

struct ICMP_ECHO_REPLY
 Address dd 0
 Status dd 0
 RoundTripTime dd 0
 DataSize  dw 0
 Reserved  dw 0
 Data dd 0
 Options IP_OPTION_INFORMATION
 PingBuf db 32 dup (0)
ends

struct TInAddr
 b1 db 0
 b2 db 0
 b3 db 0
 b4 db 0
ends

Optionss IP_OPTION_INFORMATION
InAddr TInAddr
Reply ICMP_ECHO_REPLY
PingBuf db 32 dup (0)

proc Ping InetAddress,ttl  ; пингование передается адрес сервера и ТТЛ
 invoke IcmpCreateFile	;
 cmp eax,INVALID_HANDLE_VALUE  ; если не удалось создать "ICMP файл"
 je exitp
 mov [handle],eax  ;сохраним дискриптор
 invoke gethostbyname,[InetAddress]  ; попытка отпределяни IP адреса
 cmp eax,0  ; если не удалось
 je exitp  ; то
 mov eax,[eax+0ch]  ; заполение необходимой струкуры
 mov eax,[eax]
 mov cl,[eax]
 mov [InAddr.b1],cl
 mov cl,[eax+1]
 mov [InAddr.b2],cl
 mov cl,[eax+2]
 mov [InAddr.b3],cl
 mov cl,[eax+3]
 mov [InAddr.b4],cl

 mov eax,PingBuf
 mov [Reply.Data],eax
 mov [Reply.DataSize],32
 mov al,byte [ttl]
 mov [Optionss.Ttl],al
 mov eax,[InAddr]
 invoke IcmpSendEcho,[handle],eax,PingBuf,32,Optionss,Reply,92,3000  ; пинг
 cmp eax,0
 je exitp
 mov eax,1
 ret
exitp:
 xor eax,eax
 ret
endp
 
Ответить с цитированием