Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

22.01.2007, 18:14

system("ping"), C++, beliebig anpingen

Hi,

ich hatte vor ein Prog zu schreiben wo du per Eingabe eine beliebige IP eingibst die dann angepingt wird ! Ich hatte sowas in der Art gedacht:

C-/C++-Quelltext

1
2
3
4
5
6
int IP_Input;

cout << "Welche IP soll angepingt werden ?" << endl;
cin >> IP_Input;

system("ping(IP_Input)");      // Geht net !!!!!!!!


Deswegen wollte ich mal fragen wie man dat macht !?

dollar

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

22.01.2007, 18:30

also am einfachen wäre:

C-/C++-Quelltext

1
2
3
4
5
6
7
char IP_Input[20];
char array[30];

cin>>IP_Input;
sprintf_s(array, 30, "ping(%a)",  IP_Input);

system(array);


Das ist jetzt alles aus dem Kopf und nur als eine Art Pseudocode zu sehen.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

3

22.01.2007, 18:34

ich würde mir einen WSAsocket initialisieren (dazu gibt es in der DeveloperNetwork ein super Beispiel zu) und zwar als Client, mit dem Du dann auf dem allegneim üblichen PinfPort und der entsprechenden IP etwas sendest und Gleichzeitig mit dem Senden einen Timer startest, den Du stopst, wenn Du eine Antwort vom Server ,den Du ge Pingt hast, bekommst.

Über Googel findest Du sicher mehr zum Thema Ping, WSA, Socket, Client, Paketgrösse usw.

4

22.01.2007, 20:06

Danke für die antworten vom Nox die Idee funktioniert leider nicht!! Weil er dann auf den Speicherbereich zugreifen will:

Ping-Anforderung konnte Host "(-0x1.23af00p+350)" nicht finden. Überprüfen sie den Namen, und versuchen Sie es erneut.

vom epsilon2 die Idee ist professionell und natürlich am besten doch da muss man sich erst ma reinarbeiten was ich gerne machen werde nur gibt es für die schnelle vllt. noch eine newbie Lösung ?

ToxiCore

Treue Seele

Beiträge: 131

Beruf: Student

  • Private Nachricht senden

5

22.01.2007, 21:01

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <string>
#include <iostream>

#include <cstdlib>

int main()
{
    //String anlegen der gleich die IP-Adresse als String aufnimmt (z.B. "127.0.0.1")

    std::basic_string<char> ip;

    std::cout << "IP: ";
    std::cin >> ip; //IP-Adresse als String einlesen


    //String anlegen der später dem Kommandozeileninterpreter durch system() übergeben wird

    //er wird mit "ping " initialisiert da der Befehlsname ja schon feststeht und nur noch die IP-Adresse angefügt werden muss

    std::basic_string<char> cmd("ping ");
    cmd.append(ip); //IP-Adresse anfügen


    //Bsp:

    //Wenn mann z.B. 127.0.0.1 (localhost) eingibt wird "127.0.0.1" an "ping " angefügt.

    //In cmp steht also nach dem anfügen: "ping 127.0.0.1" also das gleiche als wenn man alles direkt auf der Kommandozeile eingegeben hätte


    ::system(cmd.c_str()); //Befehle ausführen lassen


    //Verhindern das sich die Konsole wieder schließt

    std::cin.clear();
    std::cin.ignore(std::cin.rdbuf()->in_avail());
    std::cin.get();

    return (0);
}


Das sollte funktionieren.

[Edit]Kommentare hinzugefügt[/Edit]

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

22.01.2007, 21:54

Warum verwendest du eigentlich std::basic_string<char>? Würd mich brennend interessieren! :) Und bitte lasst jegliche Systemcalls aus dem Code. Ihr tut euch keine Gefallen damit!
@D13_Dreinig

ToxiCore

Treue Seele

Beiträge: 131

Beruf: Student

  • Private Nachricht senden

7

22.01.2007, 22:01

Zitat von »"David_pb"«

Warum verwendest du eigentlich std::basic_string<char>? Würd mich brennend interessieren! :) Und bitte lasst jegliche System Calls aus dem Code. Ihr tut euch keine Gefallen damit!

Wie meinst du dass jetzt genau? Meinst du warum ich std::basic_string<char> anstatt std::string verwende, oder warum ich nicht einfach nur char* verwende?

Naja ich bin auch dagegen system zu benutzen, aber da er es in seiner Frage auch benutz hat hab ichs halt eingebaut. :lol: Außerdem ist mir auch kein anderer Weg bekannt einen PC anzupingen ohne Winsock & Co zu benutzen.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

22.01.2007, 22:08

Zitat von »"ToxiCore"«

Zitat von »"David_pb"«

Warum verwendest du eigentlich std::basic_string<char>? Würd mich brennend interessieren! :) Und bitte lasst jegliche System Calls aus dem Code. Ihr tut euch keine Gefallen damit!

Wie meinst du dass jetzt genau? Meinst du warum ich std::basic_string<char> anstatt std::string verwende, oder warum ich nicht einfach nur char* verwende?


Statt einfach std::string!

Zitat von »"ToxiCore"«


Naja ich bin auch dagegen system zu benutzen, aber da er es in seiner Frage auch benutz hat hab ichs halt eingebaut. :lol: Außerdem ist mir auch kein anderer Weg bekannt einen PC anzupingen ohne Winsock & Co zu benutzen.


Winsock oder eine der vielen Netzwerkbibliotheken, wie asio.
@D13_Dreinig

ToxiCore

Treue Seele

Beiträge: 131

Beruf: Student

  • Private Nachricht senden

9

22.01.2007, 22:20

Das hat eigentlich keinen bestimmten Grund. Ich habs mir irgendwie angewöhnt. Meiner Meinung nach ist das Geschmackssache ob man nun std::basic_string<char> oder std::string schreibt. Klar ist das mehr schreibarbeit aber ich finds besser. Jeder solls so machen wie er es am besten findet. :D

Oder kennst du irgendwelche großen unterschiede? Wenn ja dann sag sie mir, man lernt ja nie aus. :) Aber eigentlich ist std::string ja auch nur ein typedef für std::basic_String<char>.

10

22.01.2007, 22:28

danke Toxicore !!!

dein quellcode funktioniert !

Wäre es noch möglich das du deinen Quellcode ein bissl erläuterst damit ich weiss was ich da gemacht habe! Damit ich es für die Zukunft selber kann.

Danke

dollar

Werbeanzeige