Page 1 sur 1

QuickOpenNetworkConnection

Publié : mar. 25/mai/2004 5:43
par ZapMan
La fonction OpenNetworkConnection bloque l'execution du programme pendant 1 à 2 secondes quand le poste que l'on tente de contacter n'est pas présent.
Grâce à FWeil voici une version qui permet d'ajuster le TimeOut (et donc le temps de blocage). Attention ! Si vous diminuez trop #PING_TIMEOUT, vous risquez de "rater" un poste qui est pourtant présent.

Code : Tout sélectionner

Procedure QuickOpenNetworkConnection(sIPAddress.s,Port) 
  ; FWeil & Zapman
  #PING_TIMEOUT = 500 
  Echo.ICMP_ECHO_REPLY 
  EchoMessage.s = "PingTest " + Space(20) 
  hFile = IcmpCreateFile_() 
  IPAddress=MakeIPAddress(StringField(sIPAddress,1,"."),StringField(sIPAddress,2,"."),StringField(sIPAddress,3,"."),StringField(sIPAddress+".",4,"."))
  lngResult = IcmpSendEcho_(hFile, IPAddress, EchoMessage, Len(EchoMessage), 0, Echo, SizeOf(ICMP_ECHO_REPLY), #PING_TIMEOUT) 
  If lngResult = 0 
      PingResult = Echo\Status * -1 
    Else 
      PingResult = Echo\RoundTripTime 
  EndIf 
  lngResult = IcmpCloseHandle_(hFile) 
  If PingResult >= 0 
    Result= OpenNetworkConnection(sIPAddress.s,Port)
  Else
    Result = 0
  EndIf
  ProcedureReturn Result
EndProcedure