Italian [RISOLTO] B4A - Capire se un IP Pubblico è raggiungibile/connesso

Nicola Ciaramellano

Member
Licensed User
Ora sei tu che non mi credi?... ;)
View attachment 111778

Parliamo del codice di LucaMs e Nicola, vero?

Come ti ho già spiegato anche con la modifica di Luca non puoi ottenere una cosa diversa rispetto a quello che otterresti utilizzando un normale ping come questo:

Bash:
PING 185.104.124.17 (185.104.124.17) 56(84) bytes of data.

--- 185.104.124.17 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms

[root@mysql ~]# ping -w1 195.60.191.158
PING 195.60.191.158 (195.60.191.158) 56(84) bytes of data.
64 bytes from 195.60.191.158: icmp_seq=1 ttl=55 time=48.3 ms

--- 195.60.191.158 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 48.388/48.388/48.388/0.000 ms

[root@mysql ~]# ping -w1 185.104.124.29
PING 185.104.124.29 (185.104.124.29) 56(84) bytes of data.

--- 185.104.124.29 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms

[root@mysql ~]# ping -w1 195.60.191.217
PING 195.60.191.217 (195.60.191.217) 56(84) bytes of data.
64 bytes from 195.60.191.217: icmp_seq=1 ttl=55 time=31.0 ms

--- 195.60.191.217 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 31.043/31.043/31.043/0.000 ms

[root@mysql ~]# ping -w1 195.60.191.193
PING 195.60.191.193 (195.60.191.193) 56(84) bytes of data.
64 bytes from 195.60.191.193: icmp_seq=1 ttl=55 time=79.3 ms

--- 195.60.191.193 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 79.353/79.353/79.353/0.000 ms

[root@mysql ~]# ping -w1 89.21.218.179
PING 89.21.218.179 (89.21.218.179) 56(84) bytes of data.

--- 89.21.218.179 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms

[root@mysql ~]# ping -w1 195.60.191.192
PING 195.60.191.192 (195.60.191.192) 56(84) bytes of data.
64 bytes from 195.60.191.192: icmp_seq=1 ttl=55 time=48.5 ms

--- 195.60.191.192 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 48.580/48.580/48.580/0.000 ms

[root@mysql ~]# ping -w1 94.101.54.205
PING 94.101.54.205 (94.101.54.205) 56(84) bytes of data.

--- 94.101.54.205 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms

[root@mysql ~]# ping -w1 94.101.60.12
PING 94.101.60.12 (94.101.60.12) 56(84) bytes of data.

--- 94.101.60.12 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms


[root@mysql ~]# ping -w1 94.101.55.163
PING 94.101.55.163 (94.101.55.163) 56(84) bytes of data.

--- 94.101.55.163 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms

ping: unknown host 128.123.123.345

Che è esattamente quello che ottieni dalla procedura
 

Sabotto

Active Member
Licensed User
Luca ma è lo stesso di prima con la correzione del percentuale... provalo col mio, ci sono anche gli altri indirizzi!
La routine TestServer è sempre la stessa (con quella correzione), giusto?
 

LucaMs

Expert
Licensed User
Longtime User
Sì, è il codice che ho "postato" (bleah) in preDecenza.
ci sono anche gli altri indirizzi!

Ora non ho voglia/tempo per altri test, sto ammattendo con altro :mad: 😄.

Cmq, il punto è ancora quello: il ping non è affidabile. Il download... non vedo come potresti farlo, non sapendo cosa "downloadare"...!

Ergo, almeno per il momento non una soluzione ideale, mi spiace.
 

Star-Dust

Expert
Licensed User
Senti ma a me funzionano. Vuoi che li controllo io i server? 😂 😂 😂 😂

Ma hai provato con WebWiew? fai delle prove non vorrei che il tuo problema fosse legato a qualche libreria non aggiornata.
Che versione di Android usi?
 

Sabotto

Active Member
Licensed User
Senti ma a me funzionano. Vuoi che li controllo io i server? 😂 😂 😂 😂

Ma hai provato con WebWiew? fai delle prove non vorrei che il tuo problema fosse legato a qualche libreria non aggiornata.
Che versione di Android usi?
10
 

Sabotto

Active Member
Licensed User
Eeeeesatttooo!
Si. Ma come ti dicevo alcuni ip rispondono con 0 pacchetti ricevuti nonostante siano attivi. dipende dal router, come mi hai gia spiegato, ma quindi significa che alla fine della fiera, questa routine non va bene per ottenere cio che voglio. Giusto?
 

Star-Dust

Expert
Licensed User
Si. Ma come ti dicevo alcuni ip rispondono con 0 pacchetti ricevuti nonostante siano attivi. dipende dal router, come mi hai gia spiegato, ma quindi significa che alla fine della fiera, questa routine non va bene per ottenere cio che voglio. Giusto?
Ma che vuoi ottenere tu? Sapere se i router sono attivi? o che inviano le pagine?
 

Nicola Ciaramellano

Member
Licensed User
Si. Ma come ti dicevo alcuni ip rispondono con 0 pacchetti ricevuti nonostante siano attivi. dipende dal router, come mi hai gia spiegato, ma quindi significa che alla fine della fiera, questa routine non va bene per ottenere cio che voglio. Giusto?

Per quello ti dicevo che la procedura funziona SOLO se il router risponde al ping dall'esterno, altrimenti non hai scampo.... o utilizzi okhttp o niente.
Ora non so quanto sei disposto a spendere per una soluzione del genere, altrimenti, se ho ben capito, devi essere avvisato quando uno dei siti è down.
In questo caso io utilizzerei dei raspberry con un sistema di keepalive verso un server pubblico che si interfaccia ad un sistema di messaggistica tipo telegram e ti manda un alert quando non viene ricevuto un keepalive per il tempo definito.
Io l'ho usato per delle applicazioni domotiche qualche tempo fa ma qualche soldino (pochi) e un pò di tempo ce lo devi mettere a conto
 

Sabotto

Active Member
Licensed User
Ma che vuoi ottenere tu? Sapere se i router sono attivi? o che inviano le pagine?
L'ho spiegato nel primo post cosa voglio ottenere ma forse non sono stato chiaro. Voglio testare se un router remoto che ha un indirizzo IP pubblico, ha la connessione.
Non ho mai parlato di pagine...Si, vorrei sapere solo se hanno connessione. Per intenderci se per assurdo uno spegne il router o stacca il cavetto della linea o spegne il router io facendo questo test, capisco che c'è un problema su quel sito e si va a vedere che è successo.
..., se ho ben capito, devi essere avvisato quando uno dei siti è down.
In questo caso io utilizzerei dei raspberry con un sistema di keepalive verso un server pubblico che si interfaccia ad un sistema di messaggistica tipo telegram....
Io l'ho usato per delle applicazioni domotiche qualche tempo fa ma qualche soldino (pochi) e un pò di tempo ce lo devi mettere a conto
Non devo essere avvisato in automatico Nicola. Mi basta saperlo quando farccio il test.
Non devo mettere in piedi nessun sistema complicato, non faccio il programmatore di professione, non ho budget da spendere e non ne sarei nemmeno in grado (visto che parlavi di Rabsperry, keepalive, ecc...). Sarebbe una applicazione pou comoda per fare il test che faccio normalmente con il sistema dell'indirizzo nel browser

... altrimenti non hai scampo.... o utilizzi okhttp o niente.
Se guardate il mio primo post ero partito cosi infatti (senza ping, e usando OkHTTP) poi LUcaMs aveva detto che forse bastava un "semplice" ping... ma poi anche lui nel post #47 si è convinto dicendo che non è affidabile...

In definitiva: è possibile scrivere un codice che faccia e dia gli stessi risultati che si ottengono quando tali indirizzi vengono digitati in un browser (rispondono tutti con ua pagina, mentre se hanno problemi si apre la pagina "Non è possibile contattare il server xxx.xxx.xxx.xxx.
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
ma poi anche li nel post #47 si è convinto dicendo che non è affidabile...
Veramente lo avevo detto subito, anche se non con quelle parole.
Il motivo principale per cui non è da ritenersi affidabile è che i gestori possono impedire la risposta ai ping!
 

Star-Dust

Expert
Licensed User
L'ho spiegato nel primo post cosa voglio ottenere ma forse non sono stato chiaro. Voglio testare se un router remoto che ha un indirizzo IP pubblico, ha la connessione.
Non ho mai parlato di pagine...Si, vorrei sapere solo se hanno connessione. Per intenderci se per assurdo uno spegne il router o stacca il cavetto della linea o spegne il router io facendo questo test, capisco che c'è un problema su quel sito e si va a vedere che è successo.

Non devo essere avvisato in automatico Nicola. Mi basta saperlo quando farccio il test.
Non devo mettere in piedi nessun sistema complicato, non faccio il programmatore di professione, non ho budget da spendere e non ne sarei nemmeno in grado (visto che parlavi di Rabsperry, keepalive, ecc...). Sarebbe una applicazione pou comoda per fare il test che faccio normalmente con il sistema dell'indirizzo nel browser


Se guardate il mio primo post ero partito cosi infatti (senza ping, e usando OkHTTP) poi LUcaMs aveva detto che forse bastava un "semplice" ping... ma poi anche lui nel post #47 si è convinto dicendo che non è affidabile...
Si ma non ti arrabbiare. La conversazione per strada se persa e quindi non capivo più cosa volevo ottenere. Comunque alla prossima pausa vedo un po' se si può fare qualcosa.
Gli indirizzi sono solo quelli del primo post?
 

Sabotto

Active Member
Licensed User
Veramente lo avevo detto subito, anche se non con quelle parole.
Il motivo principale per cui non è da ritenersi affidabile è che i gestori possono impedire la risposta ai ping!
e allora per punizione risolvimi il problema con l'OKHTTP.
Metti uno a uno gli IP (sono 11 per il momento) in un browser (con il prefisso http:// o https:// e la porta (se c'è) e dovunque non ti appare la pagina "impossibile contattare il server...." ecc significa che è ok e tale deve risultare anche con B4A.

Scherzo. L'ho scritto per ribadire il concetto
 
Last edited:

Sabotto

Active Member
Licensed User
Si ma non ti arrabbiare. La conversazione per strada se persa e quindi non capivo più cosa volevo ottenere. Comunque alla prossima pausa vedo un po' se si può fare qualcosa.
Gli indirizzi sono solo quelli del primo post?
NO star dust. Assoultamente, ci mancherebbe pure... Capisco perfettamente che uno si perda man mano che scriviamo.. Se sono sembrato contrariato me ne scuso. Ripeto ci mancherebbe pure!!!!
 

LucaMs

Expert
Licensed User
Longtime User
e allora per punizione risolvimi il problema con l'OKHTTP.
Metti uno a uno gli IP (sono 11 per il momento) in un browser (con il prefisso http:// o https:// e la porta (se c'è) e dovunque non ti appare la pagina "impossibile contattare il server...." ecc significa che è ok e talòe deve risultare anche con B4A.

Scherzo. L'ho scritto per ribadire il concetto
Lo faccio subito; subito dopo aver completato e pubblicato un paio di app in cantiere. Data prevista: maggio (2033 😄)
 

Sabotto

Active Member
Licensed User
Gli IP sono questi


B4X:
Indir_IP_Pubblico(0) = "http://185.104.124.17"      ' asa
Indir_IP_Pubblico(1) = "https://195.60.191.158"     ' nord (https)
Indir_IP_Pubblico(2) = "http://185.104.124.29"      ' sud
Indir_IP_Pubblico(3) = "http://195.60.191.217:8080" ' bosc (porta 8080)
Indir_IP_Pubblico(4) = "http://195.60.191.193:8080" ' campo em (porta 8080)
Indir_IP_Pubblico(5) = "http://89.21.218.179"       ' castr
Indir_IP_Pubblico(6) = "https://195.60.191.192"     ' corno (https)
Indir_IP_Pubblico(7) = "http://94.101.54.205"       ' foces
Indir_IP_Pubblico(8) = "http://94.101.60.12"        ' padula
Indir_IP_Pubblico(9) = "http://94.101.55.163:8080"  ' pescara (porta 8080)
Indir_IP_Pubblico(10) = "http://128.123.123.345"    ' farlocco
 
Last edited:
Top