mit dieser Bibliothek ist es möglich, eine beliebige Website bzw. einen Server anzupingen, um zu ermitteln, ob die Website erreichbar ist.
Funktionen:
- SendICMPPing()
- Syntax:
Code: Alles auswählen
Result = SendICMPPing(Address$, Timeout, TTL, DontFragment, @ErrorOutput$)
- Beschreibung: Sendet an einen Server ein Ping-Paket (ICMP-Echo Message).
- Parameter:
- Address$: Die Domain oder IP-Adresse des Servers.
- Timeout: Legt die Zeit in Millsekunden fest, wie lange maximal auf die Rückmeldung des Zielservers gewartet werden soll.
- TTL: Legt die Anzahl fest, wie oft das Paket an Routern und Gateways weitergeleitet werden darf, bis das Paket verworfen wird.
- DontFragment: Legt fest, ob das gesendete Paket fragmentiert werden kann.
- @ErrorOutput$: Falls ein Fehler auftrat, dann wird die Fehlermeldung in die Variable gespeichert. Diese Variable muss vor dem Übergeben mit 128 Zeichen reserviert werden. Maximale Länge der Rückgabe beträgt 128 Zeichen einschließlich des NULL-Zeichens. Wenn bei einem Fehler keine Fehlerbeschreibung zurückgegeben werden soll, dann kann stattdessen 0 übergeben werden.
- Rückgabewert:
- 1: Der Vorgang war erfolgreich.
- Beispielcode:
Code: Alles auswählen
EnableExplicit Global PBEx_ICMP #PBEx_ICMP_Status_BadDestination = 11018 #PBEx_ICMP_Status_BadHeader = 11042 #PBEx_ICMP_Status_BadOption = 11007 #PBEx_ICMP_Status_BadRoute = 11012 #PBEx_ICMP_Status_DestinationHostUnreachable = 11003 #PBEx_ICMP_Status_DestinationNetworkUnreachable = 11002 #PBEx_ICMP_Status_DestinationPortUnreachable = 11005 #PBEx_ICMP_Status_DestinationProhibited = 11004 #PBEx_ICMP_Status_DestinationProtocolUnreachable = 11004 #PBEx_ICMP_Status_DestinationScopeMismatch = 11045 #PBEx_ICMP_Status_DestinationUnreachable = 11040 #PBEx_ICMP_Status_HardwareError = 11008 #PBEx_ICMP_Status_IcmpError = 11044 #PBEx_ICMP_Status_NoResources = 11006 #PBEx_ICMP_Status_PacketTooBig = 11009 #PBEx_ICMP_Status_ParameterProblem = 11015 #PBEx_ICMP_Status_SourceQuench = 11016 #PBEx_ICMP_Status_Success = 0 #PBEx_ICMP_Status_TimedOut = 11010 #PBEx_ICMP_Status_TimeExceeded = 11041 #PBEx_ICMP_Status_TtlExpired = 11013 #PBEx_ICMP_Status_TtlReassemblyTimeExceeded = 11014 #PBEx_ICMP_Status_Unknown = -1 #PBEx_ICMP_Status_UnrecognizedNextHeader = 11043 CompilerIf #PB_Compiler_Processor = #PB_Processor_x86 PBEx_ICMP = OpenLibrary(#PB_Any, "PB.Ex_ICMP_x86.dll") CompilerElseIf #PB_Compiler_Processor = #PB_Processor_x64 PBEx_ICMP = OpenLibrary(#PB_Any, "PB.Ex_ICMP_x64.dll") CompilerEndIf If PBEx_ICMP Prototype SendICMPPing(Address.p-Unicode, Timeout, TTL, DontFragment, ErrorOutput) Global SendICMPPing.SendICMPPing = GetFunction(PBEx_ICMP, "SendICMPPing") Prototype GetICMPStatus(ErrorOutput) Global GetICMPStatus.GetICMPStatus = GetFunction(PBEx_ICMP, "GetICMPStatus") Prototype GetICMPIPAddress(Output, ErrorOutput) Global GetICMPIPAddress.GetICMPIPAddress = GetFunction(PBEx_ICMP, "GetICMPIPAddress") Prototype GetICMPRoundTripTime(ErrorOutput) Global GetICMPRoundTripTime.GetICMPRoundTripTime = GetFunction(PBEx_ICMP, "GetICMPRoundTripTime") Prototype GetICMPTTL(ErrorOutput) Global GetICMPTTL.GetICMPTTL = GetFunction(PBEx_ICMP, "GetICMPTTL") EndIf Global Output$ = Space(1024) Global ErrorOutput$ = Space(128) Define ICMPStatus SendICMPPing("www.google.de", 1000, 128, 1, @ErrorOutput$) ICMPStatus = GetICMPStatus(@ErrorOutput$) If ICMPStatus = #PBEx_ICMP_Status_Success GetICMPIPAddress(@Output$, @ErrorOutput$) Debug "IP address: " + Output$ Debug "Time needed: " + GetICMPRoundTripTime(@ErrorOutput$) Debug "TTL: " + GetICMPTTL(@ErrorOutput$) Else Debug "ICMP-Error: " + ICMPStatus EndIf CloseLibrary(PBEx_ICMP)
- Syntax:
Code: Alles auswählen
Result = GetICMPStatus(@ErrorOutput$)
- Beschreibung: Ermittelt den Status. Diese Funktion ist nur nach dem Aufrufen der SendICMPPing()-Funktion gültig.
- Parameter:
- @ErrorOutput$: Falls ein Fehler auftrat, dann wird die Fehlermeldung in die Variable gespeichert. Diese Variable muss vor dem Übergeben mit 128 Zeichen reserviert werden. Maximale Länge der Rückgabe beträgt 128 Zeichen einschließlich des NULL-Zeichens. Wenn bei einem Fehler keine Fehlerbeschreibung zurückgegeben werden soll, dann kann stattdessen 0 übergeben werden.
- Rückgabewert: Mit Hilfe des Status-Wertes kann z.B. ermittelt werden, ob der Server erreichbar war oder ob ein Timeout auftrat. Folgende Konstanten können abgefragt werden:
- #PBEx_ICMP_Status_BadDestination
- #PBEx_ICMP_Status_BadHeader
- #PBEx_ICMP_Status_BadOption
- #PBEx_ICMP_Status_BadRoute
- #PBEx_ICMP_Status_DestinationHostUnreachable
- #PBEx_ICMP_Status_DestinationNetworkUnreachable
- #PBEx_ICMP_Status_DestinationPortUnreachable
- #PBEx_ICMP_Status_DestinationProhibited
- #PBEx_ICMP_Status_DestinationProtocolUnreachable
- #PBEx_ICMP_Status_DestinationScopeMismatch
- #PBEx_ICMP_Status_DestinationUnreachable
- #PBEx_ICMP_Status_HardwareError
- #PBEx_ICMP_Status_IcmpError
- #PBEx_ICMP_Status_NoResources
- #PBEx_ICMP_Status_PacketTooBig
- #PBEx_ICMP_Status_ParameterProblem
- #PBEx_ICMP_Status_SourceQuench
- #PBEx_ICMP_Status_Success
- #PBEx_ICMP_Status_TimedOut
- #PBEx_ICMP_Status_TimeExceeded
- #PBEx_ICMP_Status_TtlExpired
- #PBEx_ICMP_Status_TtlReassemblyTimeExceeded
- #PBEx_ICMP_Status_Unknown
- #PBEx_ICMP_Status_UnrecognizedNextHeader
- Syntax:
Code: Alles auswählen
Result = GetICMPIPAddress(@Output$, @ErrorOutput$)
- Beschreibung: Ermittelt die aufgelöste IP-Adresse des angepingten Servers. Diese Funktion ist nur nach dem Aufrufen der SendICMPPing()-Funktion gültig.
- Parameter:
- @Output$: Die aufgelöste IP-Adresse wird in diese Variable gespeichert.
- @ErrorOutput$: Falls ein Fehler auftrat, dann wird die Fehlermeldung in die Variable gespeichert. Diese Variable muss vor dem Übergeben mit 128 Zeichen reserviert werden. Maximale Länge der Rückgabe beträgt 128 Zeichen einschließlich des NULL-Zeichens. Wenn bei einem Fehler keine Fehlerbeschreibung zurückgegeben werden soll, dann kann stattdessen 0 übergeben werden.
- Rückgabewert:
- 1: Der Vorgang war erfolgreich.
- Syntax:
Code: Alles auswählen
Result = GetICMPRoundTripTime(@ErrorOutput$)
- Beschreibung: Ermittelt die benötigte Zeit in Millisekunden, wie lange es gedauert hat, das Ping-Paket zum Server zu senden und zurückzuschicken. Diese Funktion ist nur nach dem Aufrufen der SendICMPPing()-Funktion gültig.
- Parameter:
- @ErrorOutput$: Falls ein Fehler auftrat, dann wird die Fehlermeldung in die Variable gespeichert. Diese Variable muss vor dem Übergeben mit 128 Zeichen reserviert werden. Maximale Länge der Rückgabe beträgt 128 Zeichen einschließlich des NULL-Zeichens. Wenn bei einem Fehler keine Fehlerbeschreibung zurückgegeben werden soll, dann kann stattdessen 0 übergeben werden.
- Rückgabewert: Zeit in Millsekunden
- Syntax:
Code: Alles auswählen
Result = GetICMPTTL(@ErrorOutput$)
- Beschreibung: Ermittelt den TTL-Wert (Time to Live), wie oft das Ping-Paket an Routern und Gateways weitergeleitet wurde, bis das Paket ankam. Diese Funktion ist nur nach dem Aufrufen der SendICMPPing()-Funktion gültig.
- Parameter:
- @ErrorOutput$: Falls ein Fehler auftrat, dann wird die Fehlermeldung in die Variable gespeichert. Diese Variable muss vor dem Übergeben mit 128 Zeichen reserviert werden. Maximale Länge der Rückgabe beträgt 128 Zeichen einschließlich des NULL-Zeichens. Wenn bei einem Fehler keine Fehlerbeschreibung zurückgegeben werden soll, dann kann stattdessen 0 übergeben werden.
- Rückgabewert: Anzahl der Weiterleitungen.
- Syntax:
- Windows Vista oder höher
- .NET Framework 4.5 oder höher
- Unicode-Aktivierung (standardmäßig ab PB 5.50)
Folgende Copyright-Texte müssen mitgeliefert werden:
Download: https://www.rsbasic.de/downloads/downlo ... x_ICMP.zipCopyright © 2019 RSBasic.de
Ich würde mich über Feedbacks, Verbesserungsvorschläge, Fehlermeldungen oder Wünsche sehr freuen. Wer mich unterstützen möchte, kann mir auch was kleines spenden. Danke