ip anpingen
-
Hallo ich versuche gerade folgendes wenn man eine IP eingibt dann soll diese angepingt werden. Nur ich weiss nicht wie ich meine eingabe in das system("ping"); rein bringen soll.
Ich könnte ja zwar z.b. system("ping 127.0.0.1"); dort eingeben aber ich will ja nicht nur mich anpingen da soll man ja eingeben können was man will ohne erst den source code änderen zu müssen. XDHat da wer eine ahnung ob das geht und wenn ja wie ?
#include <iostream> using namespace std; int main() { int ip; cout<<"IP eingeben :\n"; cin>>ip; system("ping"); fflush(stdin); getchar(); }
-
Du mußt das Kommando als String zusammenbauen, bevor du es an system() übergeben kannst:
string ip; cin>>ip; string command = "ping "+ip; system(command.c_str());PS: Ein int ist imho nicht der richtige Datentyp für eine IP-Adresse

PPS: Und für "fflush(stdin);" gehörst du eigentlich erschossen.
-
ok thx
aber was is den so schlimm an fflush(stdin);
das mach ich ja nur zum Tastatur Puffer löschen weil ich schon öfters hatte das Programm von mir einfach sofort wieder ausgegangen sind. ^^
Was soll ich den sonst nehmen ich kenne nur cin.get(); getchar(); system("PAUSE");
-
nimm doch getch(),
-
Bassmaster schrieb:
aber was is den so schlimm an fflush(stdin);
das mach ich ja nur zum Tastatur Puffer löschen
Und genau das tut fflush(stdin) laut Standard nicht - viel schlimmer noch: Es ist undefiniert.
-
ok thx
-
std::istream& clear_stream(std::istream& in) { return in.clear(), in.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); }nehmen ... das Verhalten ist definiert ^^
#include <iostream> #include <limits> #include <string> #include <cstdlib> std::istream& clear_stream(std::istream& in) { return in.clear(), in.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } int main() { std::cout << "IP-Adresse: " << std::flush; std::string string_command; std::in >> string_command; string_command.insert(0, "ping "); std::system(string_command.c_str()); clear_stream(std::cin).get(); }