PDA

View Full Version : [C++] verifica di ping


athebustop
17-11-2004, 14:46
come posso fare in c++ una verifica di ping del tipo (dato un ip)

se rispondi al ping -> stampa "ok"
se non rispondi al ping -> stampa "errore"

grazie

athebustop
17-11-2004, 14:56
è possibile fare la stessa cosa in PHP?
è possibile in PHP verificare se, dato un indirizzo IP, esso risponde o no?

grazie

ilsensine
17-11-2004, 15:36
Su linux, basta eseguire (ad es. tramite la funzione system)
ping -c 1 <host>
e controllare il valore ritornato da ping. Se restituisce 0 il ping ha avuto successo, altrimenti no.
Vedi la pagina man di system per come ottenere il valore restituito da un comando.

ilsensine
17-11-2004, 15:49
Originariamente inviato da athebustop
è possibile in PHP verificare se, dato un indirizzo IP, esso risponde o no?

Questo non è sempre possibile tramite ping: alcuni siti aprono delle porte per dei servizi (ad es. la porta 80 TCP per l'http) e bloccano gli altri protocolli (come l'ICMP echo-request, con il quale funziona il ping). In questo caso te la cavi verificando la possibilità di aprire un socket su una porta aperta di quell'IP. Devi valutare caso per caso.

athebustop
17-11-2004, 16:14
posso in PHP con fsockopen() verificare se a quell'IP e a quella porta risponde nessuno ?

ilsensine
17-11-2004, 16:22
Se l'apertura del socket fallisce, o non c'è nessuno, o non c'è nessun servizio in ascolto su quella porta, oppure la porta è filtrata.

71103
17-11-2004, 18:39
Originariamente inviato da ilsensine
Su linux, basta eseguire (ad es. tramite la funzione system)
ping -c 1 <host>
e controllare il valore ritornato da ping. Se restituisce 0 il ping ha avuto successo, altrimenti no.
Vedi la pagina man di system per come ottenere il valore restituito da un comando.
Credo che su Windows sia esattamente la stessa cosa: non ricordo il formato del comando ping quindi non so se c'è l'opzione -c, ma per il resto è uguale.

ilsensine
18-11-2004, 07:58
Originariamente inviato da 71103
Credo che su Windows sia esattamente la stessa cosa: non ricordo il formato del comando ping quindi non so se c'è l'opzione -c, ma per il resto è uguale.
Windows gestisce i "valori di ritorno" delle applicazioni in modo simile? Andrebbe provato...