| |
|
|
| Stefan Landsberg
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. |
|
|
| |
|
|
|
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: KompilierenMarkierenSeparierendeclare 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. |
|
|
| |
|
|
|
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: KompilierenMarkierenSeparierendeclare 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 ausgefhrt fr 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 fr 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. |
|
|
| |
|
|
|
| |
|
| |
|
|
|
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 (ist ein komisches Gefühl den großen iF korrigiern zu dürfen ) |
|
|
| |
|
|