PDA

View Full Version : [C] stupidissimo programma per pingare la rete


tecno789
13-02-2012, 13:34
Salve, avrei intenzione di fare un programma stupido che mi pinghi la rete. Ho provato con la system e funziona se pingo un solo host : esempio il vecchio : ping www.google.it

Ma se io volessi pingare un range di dati???

Ignoranza permettendo ho fatto una stupidata del genere :

int i;
for(i=0;i<N;i++){
system("ping 192.168.0.%d\n",i);


eheh sfortunatamente fa un ciclo così infinito da impastarmi tutto il netbook :D e non capisco come mai...qualcuno riesce a darmi una mano??

p.s : lo so è una stupidata di programma però mi serve per uso personale.

grazie

shinya
13-02-2012, 14:08
Ma usare nmap invece?

tecno789
13-02-2012, 14:25
Ma usare nmap invece?

ma quello è un programma già pronto :D

clockover
13-02-2012, 14:48
ma quello è un programma già pronto :D

:D perchè ping lo hai scritto tu? :D

-MiStO-
13-02-2012, 15:26
Salve, avrei intenzione di fare un programma stupido che mi pinghi la rete. Ho provato con la system e funziona se pingo un solo host : esempio il vecchio : ping www.google.it

Ma se io volessi pingare un range di dati???

Ignoranza permettendo ho fatto una stupidata del genere :

int i;
for(i=0;i<N;i++){
system("ping 192.168.0.%d\n",i);


eheh sfortunatamente fa un ciclo così infinito da impastarmi tutto il netbook :D e non capisco come mai...qualcuno riesce a darmi una mano??

p.s : lo so è una stupidata di programma però mi serve per uso personale.

grazie
domanda stupida: ma N quanto vale?l'hai inizializzato da qualche parte?

tecno789
13-02-2012, 15:48
domanda stupida: ma N quanto vale?l'hai inizializzato da qualche parte?

certo, è una costante....
vale 255

marco.r
13-02-2012, 16:21
Salve, avrei intenzione di fare un programma stupido che mi pinghi la rete. Ho provato con la system e funziona se pingo un solo host : esempio il vecchio : ping www.google.it

Ma se io volessi pingare un range di dati???

Ignoranza permettendo ho fatto una stupidata del genere :

int i;
for(i=0;i<N;i++){
system("ping 192.168.0.%d\n",i);


eheh sfortunatamente fa un ciclo così infinito da impastarmi tutto il netbook :D e non capisco come mai...qualcuno riesce a darmi una mano??

p.s : lo so è una stupidata di programma però mi serve per uso personale.

grazie

Continuia all'infinito perche' non gli dici di smettere :D
sotto unix usa -c per dire quante volte pingare

int i;
for(i=0;i<N;i++){
system("ping -c 10 192.168.0.%d\n",i);

tecno789
13-02-2012, 16:27
Continuia all'infinito perche' non gli dici di smettere :D
sotto unix usa -c per dire quante volte pingare

int i;
for(i=0;i<N;i++){
system("ping -c 10 192.168.0.%d\n",i);


sicuro che funzioni?? a me è andato in fork bomb di nuovo :D

starfred
13-02-2012, 20:12
metti una sleep

WarDuck
13-02-2012, 20:24
Ma usa i socket dai :D.

tecno789
13-02-2012, 21:31
:D perchè ping lo hai scritto tu? :D

ahhaha è vero :D

mi hai fregato

Ma usa i socket dai :D.

what????

marco.r
13-02-2012, 21:37
sicuro che funzioni?? a me è andato in fork bomb di nuovo :D
Avevo fatto senza provare.
Prova a includere stdlib.h come si deve e poi capisci perche' ti si pianta.

tecno789
13-02-2012, 21:42
Avevo fatto senza provare.
Prova a includere stdlib.h come si deve e poi capisci perche' ti si pianta.

a dire il vero si pianta comunque :muro:

WarDuck
13-02-2012, 21:54
ahhaha è vero :D

mi hai fregato



what????

I socket, sono un componente fondamentale nella programmazione di rete, ma immagino sia ancora presto...

tecno789
13-02-2012, 22:05
I socket, sono un componente fondamentale nella programmazione di rete, ma immagino sia ancora presto...

immagini benissimo, perchè proprio di programmazione di rete ne so 0. Comunque il mio intento era creare un programmino stupido che entro un determinato range pingava gli indirizzi ip e mi diceva quindi se c'era la presenza o no di un host, mi sembrava una buona idea, ma mi sembra di capire che con la system non si va da nessuna parte.

marco.r
13-02-2012, 22:07
a dire il vero si pianta comunque :muro:
system() accetta un solo argomento.
Per cui chiamandola con due argomenti hai cominciato a spaciugare involontariamente con lo stack. Includendo stdlib.h pero' dovresti trovarti un errore, in quanto la definizione che contiene non ammette due argomenti
In sostanza: prima crea un buffer per il comando, scrivi il comando che ti serve (ad esempio con snprintf) e poi chiama system con il solo buffer come argomento.

tecno789
13-02-2012, 22:11
system() accetta un solo argomento.
Per cui chiamandola con due argomenti hai cominciato a spaciugare involontariamente con lo stack. Includendo stdlib.h pero' dovresti trovarti un errore, in quanto la definizione che contiene non ammette due argomenti
In sostanza: prima crea un buffer per il comando, scrivi il comando che ti serve (ad esempio con snprintf) e poi chiama system con il solo buffer come argomento.

capito. ottima spiegazione. però la compilazione non mi da nessun errore, è questo che non capisco...

clockover
14-02-2012, 00:43
magari vuoi usare per forza C ma alla fine un semplce script tipo

for i in $(seq 1 255)
do
ping -c 2 "192.168.1.$i"
done

ho messo un count massimo di 2 ma tu puoi modificarti lo scriptino come vuoi

marco.r
14-02-2012, 08:26
capito. ottima spiegazione. però la compilazione non mi da nessun errore, è questo che non capisco...

Puoi riportare _tutto_ il codice che compili ? Che compilatore usi ?

GByTe87
14-02-2012, 08:40
ping -b? Anche se magari fa sfuggire qualcosa..

tecno789
14-02-2012, 22:21
allora, sotto linux funziona perfettamente anche se le pingate sono veramente lunghe..mentre in windows mi impalla tutto ancora... :(