Detectar si un servidor responde a un puerto en Visual Basic – VB – Ejemplo

By | 22/12/2015

Código en Visual Basic para hacer una comprobación de si una IP o Nombre de servidor responde ante un puerto determinado.

El parámetro timeout está puesto en 2000 milisegundos = 2 segundos. Si en 2 segundos no recibe respuesta entonces se toma que el equipo no responde al puerto.

Es útil cuando queremos ver o detectar si hay conexión a un servidor de Base de datos de Sql Server por ejemplo, ya que usando Sql Connection tarda mucho tiempo y ralentiza mucho el programa, con este primer paso descartamos ya un posible problema de conexión y podemos ajustar los segundos de retardo.

Public Function TestForServer(address As String, port As Integer) As Boolean
Dim timeout As Integer = 2000
Dim result = False
Try
Using socket = New Sockets.Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Dim asyncResult As IAsyncResult = socket.BeginConnect(address, port, Nothing, Nothing)
result = asyncResult.AsyncWaitHandle.WaitOne(timeout, True)
socket.Close()
End Using
Return result
Catch
Return False
End Try
End Function