ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Forum AtoutFox : Re: Ping versus file()   

Sujet

rss Flux RSS des derniers messages

Vous devez vous identifier pour pouvoir poser une question ou répondre.

mar. 26 décembre 2017, 14h06

Ludo186
France France

atoutfox.public.association

Re: Ping versus file()

Bonjour Jean-piere,

J'ai trouvé ce code pour effectuer des ping, je sais pas si cela te conviendra.

o = createobject("Ping")
?o.ping("MONPOSTE")
?o.ping("192.168.168.168")
 o=null

define class Ping as custom

  *------------------------------------------------------------------------*
  procedure init
    declare long GetRTTAndHopCount in iphlpapi.dll ;
      Long lDestIPAddr ,;
      long @ lHopCount ,;
      long lMaxHops ,;
      long @ lRTT

    declare long inet_addr in wsock32.dll ;
      string cp

    declare integer getservbyname in ws2_32;
      string name,;
      string proto

    declare integer WSACleanup in ws2_32

    declare string inet_ntoa in ws2_32;
      integer in_addr

    declare integer gethostbyname in ws2_32;
      string host

    declare integer WSAStartup in ws2_32;
      integer wVerRq,;
      string lpWSAData

    declare RtlMoveMemory in kernel32 As CopyMemory;
      string @Dest,;
      integer Src,;
      integer nLength
  endproc && init

  *--------------------------------------------------------------------------*
  *---> sIPadr : adresse IP ou name
  Function Ping(sIPadr As stringAs Boolean
      lHopsCount = 0
      lRTT = 0
      lMaxHops = 4
      lResult = 0
      lIPadr = inet_addr(iif(occurs(".", sIPadr) = 4, sIPadr, this.GetIP(sIPadr)))
      return GetRTTAndHopCount(lIPadr, @lHopsCount, lMaxHops, @lRTT) = 1
  Endfunc && Ping

  *--------------------------------------------------------------------------*
  function GetIP(cServer)
  local nStruct, nSize, cBuffer, nAddr, cIP
    if WSAStartup(0x202, Repli(Chr(0),512)) = 0
    endif
    #DEFinE HOSTENT_SIZE 16
  nStruct = gethostbyname(cServer)
    IF nStruct = 0
      RETURN '0.0.0.0'
  ENDIF
  cBuffer = Repli(Chr(0), HOSTENT_SIZE)
  cIP = Repli(Chr(0), 4)
  = CopyMemory(@cBuffer, nStruct, HOSTENT_SIZE)
  = CopyMemory(@cIP, this.buf2dword(SUBS(cBuffer,13,4)),4)
  = CopyMemory(@cIP, this.buf2dword(cIP),4)
    RETURN inet_ntoa(this.buf2dword(cIP))
  endfunc && GetIP

  *--------------------------------------------------------------------------*
  function buf2dword(lcBuffer)
    RETURN Asc(SUBSTR(lcBuffer, 1,1)) + ;
  Bitlshift(Asc(SUBS(lcBuffer, 2,1)),8) +;
    Bitlshift(Asc(SUBS(lcBuffer, 3,1)),16) +;
  Bitlshift(Asc(SUBS(lcBuffer, 4,1)),24)
  endfunc && buf2dword

enddef && Ping


Ludovic

Permalink : http://www.atoutfox.org/nntp.asp?ID=0000018716
20 088 messages dans le forum • Liste complète des messages

Publicité

Les pubs en cours :


www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2024.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3