Italian Verificare connessione a Internet

Giacomo

Active Member
Licensed User
Ciao a tutti

esiste un modo semplice (b4j) per capire se il mio PC ha una connessione a internet attiva ?

In pratica la mia applicazione dovrebbe avere una "Lucetta" verde se esiste una connessione e rossa se la connessione è mancante o interrotta

Grazie
 

LucaMs

Expert
Licensed User
Per B4A, l'unica cosa che ho trovato è stata tentare di scaricare un "sito leggero" (Google.it), non so se poi ci sia di meglio (lo spero).

Tantomeno so se esista di meglio tramite B4J.

Bella risposta, potevo risparmiarmela :p
 

LucaMs

Expert
Licensed User
Ho appena scritto una stupidissima libreria che fa proprio quanto ti dicevo (suggerimento di Erel, download di Google.it).
[Se trovi una soluzione migliore, fischia, mi raccomando :D]

B4X:
Sub Process_Globals
   Private mCheckInternet As lmCheckInternet
End Sub

Sub Activity_Create(FirstTime As Boolean)
   mCheckInternet.Initialize(Me , "") ' <--- passing an empty string, Google.it will be used
End Sub

Sub btnCheckInternet_Click
   mCheckInternet.Check
End Sub


Private Sub CheckInternet(InternetOK As Boolean) 'ignore
    ToastMessageShow("Internet: " & InternetOK, True)
End Sub


P.S. Ops, non è stupidissima in quanto suggerita da Erel, ovviamente :D


[Modificata affinché JobDone non sia disponibile, è una routine privata]
[Altra modifica: data la possibilità di scegliere un sito diverso (magari il proprio) quindi modificato anche l'esempio. Non so, per adesso ;), come impostare la versione a 1.1 fatto]
 

Attachments

  • lmCheckInternet.zip
    2.6 KB · Views: 142
Last edited:

Giacomo

Active Member
Licensed User
Grandioso ! FUNGE..
Ora però devo scavalcare il firewall , in alcune configurazioni non mi fà uscire in FTP ... palle ogni giorno un problema nuovo ...
 

LucaMs

Expert
Licensed User
Ora però devo scavalcare il firewall , in alcune configurazioni non mi fà uscire in FTP

Se hai problemi, chiedi pure, ovviamente.

Probabilmente ti risponderà l'ottimo @sirjo66 , che suppongo abbia litigato con qualunque tipo di firewall e router :) (nel senso che è esperto).
 

Giacomo

Active Member
Licensed User
Alla Fine Ho fatto così ...
B4X:
Sub Process_Globals
    Private fx As JFX
    Private MainForm As Form
    Private Image_1 As ImageView
    Private T As Timer
    Private Conn As ServerSocket
End Sub

Sub AppStart (Form1 As Form, Args() As String)
    MainForm = Form1
    MainForm.SetFormStyle("UNIFIED")
    MainForm.RootPane.LoadLayout("1") 'Load the layout file.
    MainForm.Show
    Conn.Initialize(0,"")

    T.Initialize("TIC", 1000)
    T.Enabled=True
End Sub

'Evento Tick
Sub TIC_Tick
    If Conn.GetMyIP.Length > 15 Then
            'Carica Luce Rossa
            Image_1.SetImage(fx.LoadImage(File.DirAssets,"cross.png"))
        Else
            'Carica Luce Verde
            Image_1.SetImage(fx.LoadImage(File.DirAssets,"accept_button.png"))
    End If
   
End Sub

Non oso pensare ai casini che può creare ...Ma per il mio scopo funge ;)

Suggerimenti ??
 

LucaMs

Expert
Licensed User
Quale suggerimento sì.

Intanto non mi piacciono le variabili anonime come T: meglio tmrTestMyIP.

Poi, se dovesse impiegare oltre 1 secondo per connettersi? Tanto vale scrivere il codice dell'evento Tick direttamente nella AppStart, o no?
 

Giacomo

Active Member
Licensed User
Intanto non mi piacciono le variabili anonime come T: meglio tmrTestMyIP.
OK Suggerimento Recepito ... Grazie

Poi, se dovesse impiegare oltre 1 secondo per connettersi?

Era solo per provare velocemente in realtà nella mia App controllo ogni 15 - 20 secondi e se non riesce a darmi luce verde al primo giro lo farà al secondo Tick

Tanto vale scrivere il codice dell'evento Tick direttamente nella AppStart, o no?

Perdonami ... ma questa non l'ho proprio capita ,se metto il mio codice nell' AppStart ( e basta !) come temporizzo il controllo?
 

Giacomo

Active Member
Licensed User
E io che ne so che devi usarlo a tempo? :D

Giusto non potevi sapere che installo l' App su un PC con Sim interna ( Vodafone :mad: ) che perde la linea ogni 2 x 3 ...

A prescindere da questo come la vedi questa soluzione ?
( ci tengo molto al tuo giudizio ):)
 
Top