Deutsch
Quelltexte/ Codesnippets

Cmd Ping

 
Stefan Landsberg
...

Ich hab da aber nix über ping gefunden! gibts dafür keinen befehl oder muss ich erstmal gründlich lesen damit ich das finde?


Ping wirst Du imho nicht finden, dass was Du Ping nennst ist Netzwerkkommunikation und für diese Aufgabe gibt es direkt in XProfan bisher keine eingebaute Funktion. Die Codesuche zu Ping ist auch nicht wirklich sehr ergiebig: [...]  aber ein (wenn auch nicht so schöner) Workaround wäre
KompilierenMarkierenSeparieren
indem man ping.exe von Windows nutzt (Konsolenanwendung) und die Ausgaben in eine Datei umgelenkt einläd.
 
06.04.2008  
 




Rolf
Koch
Hi Stefan,

Ping ist kein Befehl in Profan. Man kann aber alles mit Profan realisieren.
Einige Codes auch für Anfänger findest Du unter Profan auf meiner Seite
[...] 
Hier ein etwas älterer Pingcode von mir:
KompilierenMarkierenSeparieren
declare pingstring$,ping$,ping%
********************************************************************

Proc Ping

    Parameters nic$,pingdatei1$,pingdatei2$
    let pingstring$=PING.EXE,nic$,>,pingdatei1$
    Assign #6,pingdatei2$
    Rewrite #6
    Print #6,pingstring$
    Close #6
    WinExecwait(pingdatei2$,0)
    Assign #5,pingdatei2$
    Erase #5
    ASSIGN #3,pingdatei1$
    RESET #3
    Ping%=0

    WHILENOT EOF(#3)

        input #3,ping$
        ping$=mid$(ping$,1,11)
        case equ$(ping$,Antwort von):Ping%=1

    WEND

    CLOSE #3
    Assign #1,pingdatei1$
    Erase #1

EndProc

********************************************************************
Beschreibung:
Es gibt zwar schon eine schnelle und schöne Onlineabfrage über API,
aber leider gibt die Funktion nur 1 für Online zurück, wenn
man über ein Standart DFÜ eingewählt ist.
Diese Prozedur ist halt nur etwas langsamer aber man kann sogar DSL
(also - keine DFÜ-Verbindung) oder das alte T-Online u.s.w abfragen!!
alles mit einem Stern umrandete ist wichtig für die Abfrage
Rolf Koch - Rokosoftware - Koblenz 2002
BEISPIEL
WINDOWSTYLE 31
Window 200,200-300,80
Windowtitle Onlinstatus-Prüfung ohne Api
TextColor RGB(0,0,255),-1
UseFont TIMES NEW ROMAN,20,10,0,0,0
DRAWTEXT 40,10,..moment ermittele!
HIER JETZT DER AUFRUF DER PROZEDUR:********************
PING ADRESSE,ERGEBNISDATEI,BATCHDATEI
Parameter
1.) Webadresse - eine immer vorhandene wie www.nic.de
2.) Dateiname, in welche Pingergebnis geschrieben wird - wird wieder gelöscht!
3.) Dateiname, um Ping korrekt aufzurufen. - wird wieder gelöscht!
********************************************************
TextColor RGB(255,255,255),RGB(255,255,255)
DRAWTEXT 40,10,
UseFont TIMES NEW ROMAN,25,20,1,0,0
TextColor RGB(0,0,255),-1
Ping 192.168.0.7,PINGTEST.TXT,PING.BAT

if equ(ping%,1)

    DRAWTEXT 25,10,Erreichbar

else

    DRAWTEXT 25,10,Nicht erreichbar

endif

waitinput

Dort wo 192.168.0.7 steht kannst Du Deine Zieladresse angeben.
 
06.04.2008  
 




Stefan
Landsberg
Hallo,
ich möchte in meinem akuellen (ersten) Projekt den Code von Rolf verwenden und hab ihn ein wenig umgeschrieben, sodass er jetz so aussieht:
KompilierenMarkierenSeparieren
declare ping%,ip$

Proc Ping

    declare pingdatei1$, pingdatei2$, pingstring$, ping$
    Parameters ip$
    let pingdatei1$="PINGTEST.TXT"
    let pingdatei2$="PING.BAT"
    let pingstring$="PING.EXE",ip$,">",pingdatei1$
    Assign #6,pingdatei2$
    Rewrite #6
    Print #6,pingstring$
    Close #6
    WinExecwait(pingdatei2$,0)
    Assign #5,pingdatei2$
    Erase #5
    ASSIGN #3,pingdatei1$
    RESET #3
    Ping%=0

    WHILENOT EOF(#3)

        input #3,ping$
        ping$=mid$(ping$,1,11)
        case equ$(ping$,"Antwort von"):Ping%=1

    WEND

    CLOSE #3
    Assign #1,pingdatei1$
    Erase #1

EndProc

********************************************************************
Beschreibung:
Es gibt zwar schon eine schnelle und schöne Onlineabfrage über API,
aber leider gibt die Funktion nur 1 für Online zurück, wenn
man über ein Standart DFÜ eingewählt ist.
Diese Prozedur ist halt nur etwas langsamer aber man kann sogar DSL
(also - keine DFÜ-Verbindung) oder das alte T-Online u.s.w abfragen!!
Vielen Dank für den (von mir veränderten) Quelltext der Prozedur an:
Rolf Koch - Rokosoftware - Koblenz 2002
----------------------------------------------------------------------
HIER JETZT DER AUFRUF DER PROZEDUR:
PING ADRESSE,ERGEBNISDATEI,BATCHDATEI
Parameter
1.) Webadresse - eine immer vorhandene wie www.nic.de
Wenn die Prozedur verwendet wird muss die Variable ping%
global deklariert werden. An diese Variable wird folgender Wert übergeben:
Erreichbarkeit der IP         ---        Wert
-------------------------------------------------------
Nicht Erreichbar                        0
Erreichbar                             1
********************************************************

Jetz würde ich aber gerne hinter den dos Befehl ping noch den parameter -a setzen damit der Hostname der ip auch ausgegeben wird.

jetzt weiß ich aber nicht wie ich es machen soll, dass in der ersten zeile der pingtest.txt das Ping und das drauf folgende leerzeichen übersprungen werden und alle darauf folgende zeichen bis zum nächsten leerzeichen in eine Variable eingelesen werden (z.B.: hostname$).

In Rolfs Code verwirrt mich dieser Befehl "ping$=mid$(ping$,1,11)".

Der liest ja eigentlich ab dem ersten zeichen die folgenden 11 zeichen in die variable ping$ ein. Bei einer erfolgreichen ping abfrage lautet der inhalt von ping$ also "Antwort von".

Der inhalt der pingtest.txt sieht so aus:



Ping wird ausgefhrt fr 127.0.0.1 mit 32 Bytes Daten:

Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=64

Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=64

Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=64

Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=64

Ping-Statistik fr 127.0.0.1:

Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust),

Ca. Zeitangaben in Millisek.:

Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms



meiner meinung nach müsste der inhalt von ping$ dann aber "Ping wird a" lauten.

Kann mir das jemand erklären?

ich hoffe ich hab das jetz verständlich geschrieben. wenn nicht dann fragt einfach nochmal nach. 
 
22.07.2008  
 




KompilierenMarkierenSeparieren
let pingstring$="PING.EXE",ip$,"-a >",pingdatei1$
 
22.07.2008  
 




Stefan
Landsberg
ok ich hab nicht verständlich geschrieben

wie ich das mache dass der hostname ausgegeben wird weiß ich.
meine frage war wie ich den hostnamen anschließend in die variable hostname$ einlesen kann.

ach außerdem:
KompilierenMarkierenSeparieren
let pingstring$="PING.EXE",ip$,"-a >",pingdatei1$
das -a ist an der falschen stelle. es muss vor die ip also so:
let pingstring$="PING.EXE -a",ip$,">",pingdatei1$

(ist ein komisches Gefühl den großen iF korrigiern zu dürfen )
 
22.07.2008  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.197 Betrachtungen

Unbenanntvor 0 min.
Uwe Starke17.11.2023
Georg Teles01.08.2023
Langer30.01.2021
Ingo20.01.2020
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Stefan Landsberg (2x)
iF (2x)
Rolf Koch (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie