Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Auf Ergebnis eines Pings reagieren

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Peter
Gast





BeitragVerfasst am: 23. Jun 2001 14:09   Titel: Auf Ergebnis eines Pings reagieren

Hi,

ich möchte ein C++ Proggie schreiben, dass unterschiedlich reagiert, je nachdem ob ein ping fuktioniert in einer bestimmten Zeit. Logisch soll das so aussehten


int flag;
while(true)
{
if(_Ping_(192.168.0.99) == true)
flag = 1;
else
flag = 0;
...
}

Wie mache ich das nun, dass ich merke ob der Ping beantwortet wird ?
 

hjb
Pro-Linux


Anmeldungsdatum: 15.08.1999
Beiträge: 3236
Wohnort: Bruchsal

BeitragVerfasst am: 23. Jun 2001 20:54   Titel: Re: Auf Ergebnis eines Pings reagieren

Hi,

if (system("ping -w 1 -c1 192.168.0.99 > /dev/null 2>&1") == 0)
flag = 1;
else
flag = 0;

Gruß,
hjb
_________________
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger

Peter
Gast





BeitragVerfasst am: 24. Jun 2001 11:48   Titel: Re: Auf Ergebnis eines Pings reagieren

Nur um das Genze auch zu verstehen, warum schreibst Du 2>&1 am Ende, was macht dass ? Ich nehme mal an dass das testen auf Null sowas wie EXIT_SUCCESS vom ping programm ist.

Ach ja:
Ich habe deinen Vorschlag gleich mal in einem kleinem Programm getestet, es funzt auch, nur bekomme ich am Ende noch einen Segmentation Fault, den ich mir nicht wirklich erklären kann, vielleicht kann ja jemand helfen.

testping.cpp:
#include <iostream.h>
#include <string.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
if(argc != 2)
{
cout << "Rufen sie das Programm mit einer IP als Option auf" << endl;
exit(-1);
}
char string[35];
strcpy(string, "ping -w1 -c1 ");
strcat(string, argv);
strcat(string, " > /dev/null 2>&1");
cout << string << endl;

if(system(string) == 0)
cout << "Der Rechner ist up" << endl;
else
cout << "Der Rechner ist down" << endl;
}


Kompiliert mit "g++ testping"
pwk@pwk:~ > a.out 192.168.0.25
ping -w1 -c1 192.168.0.25 > /dev/null 2>&1
Der Rechner ist up
Segmentation fault

Ach ja: Ohne das von mir nicht verstandenen 2>&1 gibt es keinen Seg Fault
 

Sebastian Ude
Gast





BeitragVerfasst am: 24. Jun 2001 13:25   Titel: Re: Auf Ergebnis eines Pings reagieren

@ Peter

Mit dem

> /dev/null 2>&1

bewirkt hjb, dass die Standardfehlerausgabe (2) auf die Standardausgabe (1) und diese wiederum auf /dev/null umgeleitet wird.

Ansonsten würde der User an der entsprechenden Stelle im Programm die Ausgaben des ping-Programmes sehen, was wahrscheinlich nicht erwünscht ist.


Zu dem Segfault:

Das string-Array ist maßlos unterdimensioniert !
Bei dir wäre der String ab dieser Stelle:

strcat(string, " > /dev/null 2>&1");

Schon 41 Zeichen lang - das Nullzeichen am Ende mal nicht mit eingerechnet !

Also, vergrößere das string-Array - oder, da wir sowieso in C++ arbeiten, realisiere die Geschichte mit der string-Klasse:

code:

#include <iostream.h>
#include <string>
#include <stdlib.h>

int main(int argc,char *argv[])
{
string cmd;

if(argc != 2)
{
cout << "Rufen sie das Programm mit einer IP als Option auf" << endl;
exit(-1);
}

cmd = "ping -w1 -c1 ";

/* ACHTUNG ! */
/* Um die 1 sollten eckige Klammern stehen ... *grummel* @ Board */

cmd += argv(1);
cmd += " > /dev/null 2>&1";

cout << cmd << endl;

if(system(cmd.c_str()) == 0)
cout << "Der Rechner ist up" << endl;
else
cout << "Der Rechner ist down" << endl;
}



Das ist bequemer und sicherer.
 

SELLMI
Gast





BeitragVerfasst am: 03. Jul 2001 17:21   Titel: Re: Auf Ergebnis eines Pings reagieren

wieso habe ich die file iostream.h nicht ? woher bekomme ich die ?
 

Jens Lansing
Gast





BeitragVerfasst am: 11. Jul 2001 15:03   Titel: Re: Auf Ergebnis eines Pings reagieren

Installier die C++ Header (bzw include) Dateien.
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy