system("ping 192.168.0.1")
-
Hallo,
wenn ich den Befhel |system("ping -n 1 192.168.0.1");| ausführe, erscheinen immer die Echoantworten.
Kann ich dies ürgend wie unterbinden?
Eigentlich will ich nur nach schauen ob Rechner an sind oder nicht, dazu brauche ich nicht die Statistik. Oder gibt es einen besseren Weg, um dies zu überprüfen?
Vielen Dank Björn
-
du koenntest die ausgabe in eine datei umleiten und dann kucken, was drinsteht.
oder sauberer die entsprechenden os-api funktionen nehmen.
-
Hi
leider kenn ich mich noch nicht gut mit c++ und api's aus.
was muss ich denn machen um das ganze mit der os-api zu machen?
und wie geht diese umleitung?ciao Björn
ps: vielen dank
-
Erstmal musst du herausfinden unter welchen OS du arbeitest!
-
Hi
Jo, wenn du das rausgefunden hast, baust du n ICMP ECHO Reqest Packet und schickst es an den Host den du pingen willst, und wartest auf die Reply und fertig.
Dazu gibts Tutorials oder aber wenn du unter Linux arbeiten solltest, schaust du dir einfach die ping oder traceroute source an.
-
mit der Funktion gethostbyname sollte es auch gehen.
mfg Oliver Kern.
-
was heisst auch? das ist im vorherigen vorschlag schon enthalten, ist win-api.
das mit dem umleiten geht so: system("ping 127.0.0.1 >output.txt");
dann beispielsweise nach dem soundsovielten % zeichen suchen und sehen, ob nicht 0 davor steht.
-
welche datei muss ich denn für gethostbyname einbinden? winsock2.h?
mfg
björn
-
habe noch ein problem bemerkt was gibt diese funktion zurück bzw. wie kann ich den rückgabewert denn speichern.
-
unsigned tip[4]; struct hostent *he; he = gethostbyname(q); if (he != NULL) { (void)memcpy(tip, he->h_addr_list[0], 4);
Reicht das ?
mfg Oliver Kern.
-
Vielen Dank aber bei mir kommt folgender fehler:
error LNK2001: Nichtaufgeloestes externes Symbol __imp__gethostbyname@4
ich hab nur die iostream.h und die winsock2.h eingebunden
ciao björn
-
iostream.h gibts nicht, dafuer aber google.
-
wie gibts net?????????
die benutze ich doch schon die ganze zeit!
-
#include <ws2tcpip.h>
#pragma comment( lib, "ws2_32.lib" )das sollte auch im quellcode stehen.
mfg Oliver Kern.
-
wie gibts net?????????
Nicht mehr. Siehe dazu: http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=iostream#Answ
MfG SideWinder
-
ok vielen dank.
also das programm laüft jetzt bei mir:
#include <iostream.h> #include <winsock2.h> #include <ws2tcpip.h> #pragma comment( lib, "ws2_32.lib" ) int main() { unsigned tip[4]; struct hostent *he; he = gethostbyname("localhost"); if (he != NULL) { (void)memcpy(tip, he->h_addr_list[0], 4); } return 0; }
jedoch wie kann ich nun die ermittelte ip adresse in einer variablen speichern?
-
Hi
Die steht doch in der Variablen tip.
-
ja, aber in welchem format wie kann ich daraus xxx.xxx.xxx.xxx machen?
mfg björn
-
Die ist doch schon in dem Format.
Ich glaube du solltest dir nochmal das Kapitel über Arrays durchlesen.tip ist ein Array mit 4 Elementen. Eine IP hat 4 Zahlen. Erkennst du nicht den Zusammenhang?
Und nochmal:
<iostream**.h**> ist falsch!
-
hi
also wenn ich z.b. cout << tip[0]; oder cout << tip; oder cout << tip[2];
es kommt immer 0x00000000 raus.
dsas es sich um ein array handelt weiss ich schon.
ps: wieso funktioniert dann bei mit iostream nicht und iostream.h doch ?
ciao