Con questo codice testo se risponde un indirizzo in una rete VPN entro 2 secondi (2000 ms)
Sub Test()
Dim osocket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Dim success As Boolean
Dim result As IAsyncResult
result = osocket.BeginConnect(mioIP, mPorta, New AsyncCallback(AddressOf osocket.EndConnect), osocket)
success = result.AsyncWaitHandle.WaitOne(2000, True)
If success Then
MsgBox("ok")
End if
End Sub
Se il test ha successo, tutto bene. Il problema nasce se il test non ha successo, nel senso che dopo un bel po che la routine è terminata, mi si apre la finestra “Socket.cs”, con il codice scritto in C e mi mostra l'errore seguente:
System.Net.Sockets.SocketException: 'Impossibile stabilire la connessione.
Risposta non corretta della parte connessa dopo l'intervallo di tempo oppure
mancata risposta dall'host collegato 94.101.xx.xxx'
Nn sono un programmatore espertoe credo che in effetti anche se io imposto quel tempo di 2000 ms in realtà lui continua a testare. Ma come posso fare a non far uscire questo errore, nel senso che una volta uscito dalla Sub vorrei che venisse eliminato qualsiasi processo in corso?
Ho provato anche a usare oSocket.close nella sub ma in quel caso la finestra Socket.cs mi dà l'errore che non trova piu il socket…
Spero di essermi fatto capire.