Trace Route darstellen
-
Hi!
Ich entwickel grad ein kleines Programm um einen Rechner im Netzwerk anzupingene.
Klappt wunderbar.
Jedoch wollte ich jetzt dem Benutzer die Möglichkeit geben durch klick auf einen Button auch noch die Trace-Route auszugeben.Wie stell ich das am besten an?
Vielen dank schonmal
-
Hallo
Ebtweder arbeitest du dich in die grundlegende Technik der winsocks und in die Trace-Protokolle ein, oder du suchst die eine externe Library die bereits fertige Komponenten/Funktionen für Trace bietet.
(Im Indy-Paket habe ich auf die Schnelle keine Trace-Komponente gefunden)bis bald
akari
-
hatte gehoft das Indy das schon mitbringt ....
schade.
Muss ich mal nach einer Lib schauen. Will das net aufwendig selber erstellen XD
-
ich habs jetzt so versucht das ich einfach auf eine windowsfunktion zurückgreife
leider kommt dann folgender Fehler:
[C++ Error] Unit1.cpp(319): E2085 Invalid pointer addition
Hier der code
AnsiString Host = ""; Host = Edit_Host_Name->Text; system("tracert "+Host.c_str()+" > Tracert.txt");
Warum darf ich net das + schreiben? ^^
-
Puccini schrieb:
AnsiString Host = ""; Host = Edit_Host_Name->Text; system("tracert "+Host.c_str()+" > Tracert.txt");
Warum darf ich net das + schreiben? ^^
+ geht mit AnsiString
+ geht nicht mit einfachen ""-Strings.Also mach vielleicht
AnsiString cmd="tracert "+Host.c_str()+" > Tracert.txt"; system(cmd.c_str());
und lass dann das .c_str() in der ersten zeile wqeg.
-
Hallo
Weil man C-Strings im Gegensatz zu (Ansi-)String nicht so einfach mit dem Operator + zusammenführen kann. Denn das würde unsinnigerweise nur die Zeigeradressen addieren, was insbesondere bei festen String-Literalen zu Speicherzugriffsfehlern führt. (Grundkenntnisse in C/C++ sind auch im Builder notwendig).
Benutz einfach die AnsiString-Klasse um den Text zusammenzusetzen.
AnsiString Host = ""; Host = Edit_Host_Name->Text; AnsiString Command = "tracert " +Host+ " > Tracert.txt"; system(Command.c_str());
Ich möchte darauf hinweisen das die Verwendung des Kommandozeilentools tracert über system zwar recht einfach aussieht, aber langfristig sehr unelegant und fehleranfällig. Denn der Benutzer muß nicht nur das Recht haben, die Datei Tracert.txt im aktuellen Arbeitspfad anzulegen, sondern das Programm muß diese Datei auch noch parsen. Und wenn Microsoft im nächsten Windows die Ausgabe von tracert leicht verändert, ist dein Programm unnötigerweise auch veraltet und unbrauchbar.
bis bald
akari
-
Hallo
@ volkard:
Die ZeileAnsiString cmd="tracert "+Host.c_str()+" > Tracert.txt";
behebt das Problem nocht nicht. Die Methode c_str() muß noch verschwinden, damit wenigstens das zweite Element der Verkettung ein AnsiString ist.
Edit : Vermutlich bezieht sich dein letztes Edit genau auf dieses Problem. Damit ist das dann wohl erledigt.
bis bald
akari
-
genau so hab ich das jetzt auch gemacht
nach meinem Post is mir aufgefallen, das ich ja nen AnsiString hab XD
man man man...
sorry für die Belästigung
-
Hi, das mit der TraceRoute klappt ja super, nur leider is da immer das "blöde" schwarze Fenster!
[url]http://ragesoft.de/index.php?option=com_content&task=view&id=47&Itemid= [/url]
Wie bekomme ich dieses Dos-Fenster unterdrückt?
Danke schonmal
-
Solange du mit system arbeitest gar nicht.
-
oh :<
ich hatte gehoft, das ich das fenster wenigstens minimieren kann oder so.Schade :<
-
Ein tracert selbst zu programmiern ist garnicht so schwierig, setzt allerdings ein bisschen Know How voraus.
Gabe grad wenig Zeit, aber guck dir mal die Funktion IcmpSendEcho Funktion aus dem Windows SDK an. Hier der entsprechende MSDN Link