Deutsch
Forum

Ping-Tool über CMD

 

Penguin
Tux
Hallo,

ich möchte mich ersteinmal vorstellen. Mein Name ist Tony, ich bin 15 Jahre alt und besuche eine Realschule in Chemnitz. Da ich jetzt Sommerferien habe und ich nichts weiter zu tun habe, habe ich mir vorgenommen ein kleines Netzwerkanalysetool zu schreiben. Auf der suche nach einer einfachen Programmiersprache bin ich auf XProfan gestoßen.

Ich habe alles nötige gedownloaded und installiert, anschließen habe ich nach einem Pingcode gesucht und habe diesen:
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

Diesen Code habe ich mir nach meinen Bedürfnissen zurechtgeschnitten und er sieht wie folgt aus. Dazu müsste ich die von mir ausgedachte Funktionsweise erklären.

Es ist geplant, dass ich ein Tool schreibe, welches möglichst einfach eine erste Hilfe für Schüler und Lehrer bietet. Bemerkt ein User das er keinen Internetzugang hat, führt er das Tool aus, welches der Reihe nach erst den Server anpingt, dann einen anderen Client im Netzwerk und dann noch einen Rechner von außerhalb (z.B. Google). Wenn es bei einer der Schritte keine Rückmeldung gibt, soll eine Meldung mit Tips zur Behebung auf dem Bildschrim erscheinen.

Nun zum Code:
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

WINDOWSTYLE 31
Window 200,200-500,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!"
TextColor RGB(255,255,255),RGB(255,255,255)
DRAWTEXT 40,10,"                                "
UseFont "CANDARA",25,20,1,0,0
Ping "127.0.0.1","PINGTEST.TXT","PING.BAT"

if equ(ping%,1)

    TextColor RGB(0,255,0),-1
    DRAWTEXT 25,10,"Server Erreichbar"

else

    TextColor RGB(255,0,0),-1
    DRAWTEXT 25,10,"Server Nicht erreichbar"

endif

Ping "192.168.0.1","PINGTEST.TXT","PING.BAT"

if equ(ping%,1)

    TextColor RGB(0,255,0),-1
    DRAWTEXT 25,10,"Client Erreichbar"

else

    TextColor RGB(255,0,0),-1
    DRAWTEXT 25,10,"Client Nicht erreichbar"

endif

Ping "www.google.de","PINGTEST.TXT","PING.BAT"

if equ(ping%,1)

    TextColor RGB(0,255,0),-1
    DRAWTEXT 25,10,"Google Erreichbar"

else

    TextColor RGB(255,0,0),-1
    DRAWTEXT 25,10,"Google Nicht erreichbar"

endif

waitinput

Ein Problem, welches sich zur Zeit auftut, ist die Tatsache das der Fensterinhalt nicht gelöcht wird. Das heißt das "Server Erreichbar", "Client Erreichbar" und "Google Erreichbar" übereinander geschrieben werden, also brauche ich eine Möglichkeit den Inhalt des Fensters nach jedem Schritt zu löschen. Dabei bin auf

gestoßen. Nutze ich diese Möglichkeit vor bzw. nach "Server Erreichbar" wird "Server Erreichbar" gar nicht angezeigt.

Für eine kleine Hilfestellung wäre ich sehr dankbar.

Danke
Tony
 


OS: Win XP/Debian
XProfan 10
20.07.2008  
 




Sebastian
Sprenger
Hallo und herzlich willkommen, Tony!

Eigentlich gibt es gleich mehrere Möglichkeiten. Die beste wäre für jedes DrawText eine andere Position zu nehmen, z.B.
KompilierenMarkierenSeparieren
DrawText 25,40,"Server..."
DrawText 25,65,"Client..."
DrawText 25,90,"Google..."
Alternativ könntest du auch

vor jedem Cls ein WaitInput setzen oder
die Texte mit Print schreiben. (Damit ersparst du dir zwar, neue Koordinaten ausdenken/-rechnen zu müssen, bist aber auch an die Schriftart FixedSys/Courier gebunden).

Gruß, Sebastian
 
Profan² 7.0e, XProfan 9, 11.2a, FreeProfan32
Windows Vista Home Premium 32-Bit, 2.8 Ghz, 4 GB RAM
Windows Me, 1.8 Ghz, 256 MB RAM
20.07.2008  
 




Rolf
Koch
Es gibt viele Möglichkeiten. Eine schnelle hier:
KompilierenMarkierenSeparieren
declare pingstring$,ping$,ping%
set("truecolor",1)

proc clearsection

    parameters xx.x&,yy.y&
    TextColor RGB(255,255,255),RGB(255,255,255)
    DRAWTEXT xx.x&,yy.y&,Space$(150)

endproc

CLS
ping%=1

if ping%=1

    TextColor RGB(0,255,0),-1
    DRAWTEXT 25,10,"Google Erreichbar"

else

    TextColor RGB(255,0,0),-1
    DRAWTEXT 25,10,"Google Nicht erreichbar"

endif

waitinput
clearsection 25,10 vorhandenen Bereich wieder überpinseln
waitinput
 
20.07.2008  
 




Penguin
Tux
Danke für die schnellen Antworten.

Wenn ich die erste Möglichkeit verwende, würde es den Text doch nur weiter rechts schreiben, oder irre ichmich da?

Vor "Cls" ein "Waitinput" zu setzen klingt schon besser, das müsste heißen das erst eine Eingabe gemacht werden muss bevor etwas gelöscht wird.

Das mit dem "Print" hätte ich, wenn es keine Mühe macht, gern nocheinmal etwas näher erklärt. Also das mit den Schriften ist mir schon klar.

Der zeite Post leuchtet mir da schon mehr ein, ich werde etwas experimentieren.

Edit: Die möglichkeit von RoKo hat noch nicht funktioniert, ich werde mal weiter herumprobieren.
 


OS: Win XP/Debian
XProfan 10
20.07.2008  
 




Sebastian
Sprenger
Nein, nicht weiter nach rechts, sondern weiter nach unten.
Bei DrawText musst du ja zwei Zahlen angegeben. Die erste steht für die X-Position (wie weit rechts) und die zweite für die Y-Position (wie weit unten). Wenn die zweite Zahl also größer ist, wird der Text auch weiter unten erscheinen.
KompilierenMarkierenSeparieren
drawtext 25,40,"Server erreichbar"
Der Unterschied zwischen DrawText und Print ist, dass es diese beiden Zahlen bei Print nicht gibt. Wenn du schreiben würdest:
KompilierenMarkierenSeparieren
print "Server erreichbar"
print "Client erreichbar"
print "Google erreichbar"
erscheinen diese drei Zeilen automatisch untereinander.

Genau, weiter rumprobieren hilft!
 
Profan² 7.0e, XProfan 9, 11.2a, FreeProfan32
Windows Vista Home Premium 32-Bit, 2.8 Ghz, 4 GB RAM
Windows Me, 1.8 Ghz, 256 MB RAM
20.07.2008  
 




Penguin
Tux
Ahhh...
KompilierenMarkierenSeparieren
drawtext 25,40,"Server erreichbar"

Funktioniert, es war nur blöd von mir das das Fenster zu klein war , aber es fängt ja Jeder mal klein an.

Ok, dann wäre mein erstes Problem gelöst und ich bin mi dieser Community sehr zufrieden.

Ich denke das mein nächstes Problem nicht lange auf sich warten lässt, also bitte diesen Thread noch nicht schließen.
 


OS: Win XP/Debian
XProfan 10
20.07.2008  
 




Stefan
Landsberg
Hi,
irgendwie haben wir was gemeinsam.
Ich bin 14, und habe auch vor in den Sommerferien ein Programm zu schreiben dass einige Ping abfragen im Netzwerk macht und anzeigt ob die angepingte ip erreichbar ist.

Mein Problem ist nur dass ich noch nicht so richtig zum Programmieren gekommen bin und bis jetz nur das PDF Handbuch gelesen hab dass bei Profan² 6.6 dabei war.

zu deiner frage mit dem drawtext und print. ich habe das bis jetz so gelöst, dass ich vor dem print befehl einfach locate geschrieben hab. damit kann man dann auch ein x und eine y koordinate angeben.

Wenn ich dann schonmal dabei bin stell ich mich auch gleich vor (@penguin: ich hoffe du hast nix dagegen wenn ich dass in deinem Thread mache *liebguck* )

Ich bin Stefan, 14 Jahre alt und geh auf in Gymnasium im Kreis Gütersloh.
 
20.07.2008  
 



Schaut mal Ihr Beide  [...] 
 
20.07.2008  
 




Penguin
Tux
Nächstes Problem:

Ich muss die Schriftgöße eines Textes ändern der von "DrawText" ausgegeben wurde. Das mache ich doch sicher über Koordinaten, wenn ja über welche?

Gibt es vielleicht eine Liste mit oft genutzten Befehlen? Ich muss ja sonst immer wieder hier posten und das trägt sicherlich nicht zur Übersichtlichkeit des Threads bei.

Danke
Tony

Edit:
KompilierenMarkierenSeparieren
UseFont "CANDARA",10,10,1,0,0
 


OS: Win XP/Debian
XProfan 10
20.07.2008  
 




Rolf
Koch
Gib in der Profanhilfe einfach mal Drawtext als Suche ein.
Deine Frage würde durch Usefont geklärt.
 
20.07.2008  
 




Stefan
Landsberg
Hallo,

ich hab mich jetz mal intensiv damit beschäftigt und bis jetzt ist (nur) dass hier raus gekommen:
KompilierenMarkierenSeparieren
declare ping%,status$,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:
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
********************************************************
let ip$=@input$("Welche IP soll überprüft werden?","IP abfrage","127.0.0.1")
ping ip$

if equ(ping%,1)

    let status$="Erreichbar"

else

    let status$="Nicht erreichbar"

endif

MessageBox(ip$"   -   "status$,Status,0640262144)

aber bei der letzten zeile kommen immer zwei warnungen:

NR. 1

Titel: Variable nicht declariert: IP$" - "STATUS$
Inhalt:
Zeile 75:
MessageBox(ip$" - "status$,Status,0640262144)

NR. 2

Titel: Keine Zahl: STATUS
Inhalt:
Zeile 75:
MessageBox(ip$" - "status$,Status,0640262144)

und in meiner Messagebox steht dann nur "IP$" - "STATUS$" (ohne die anführungsstriche).

wie mache ich es, dass in dem text der messagebox der inhalt der beiden variablen ausgegeben wird?

gruß stefan
 
20.07.2008  
 




Paul
Glatz
du musst ip$ + " - " + status$ schreiben
 
20.07.2008  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

24.148 Betrachtungen

Unbenanntvor 0 min.
Georg Teles01.08.2023
Thomas Freier06.10.2022
Langer30.01.2021
Walter29.01.2019
Mehr...

Themeninformationen



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