VB.Net检查端口是否打开并接受连接

时间:2016-08-29 23:04:12

标签: vb.net sockets

我正在编写一个VB.Net应用程序,它连接到远程服务器并侦听该端口上的数据。

我有以下功能可以检查有问题的IP /端口是否正在侦听连接。当远程端口上的进程正在运行时工作正常但是当它没有运行而不是运行异常处理程序时,我在Visual Studio中得到一个丑陋的对话框,而不是当我运行它时。

为什么异常处理程序没有触发的任何想法?

Private Function testSelectedPort(ip As String, port As Integer) As Boolean
        ' Function to open a socket to the specified port to see if it is listening

        ' Connect to socket
        Dim testSocket As New System.Net.Sockets.TcpClient()

        Try
            testSocket.Connect(ip, port)
            ' The socket is accepting connections
            testSocket.Close()
            Return True

        Catch ex As Exception
            ' The port is not accepting connections
            Return False
        End Try

        Return False
    End Function

在“无法建立连接,因为目标计算机主动拒绝它”并且它被抛出testSocket.Connect(ip,port)行时引发的错误。

我认为如果连接失败,它会执行Catch部分中的代码吗?

1 个答案:

答案 0 :(得分:1)

抛出异常后,应由Catch - 块处理。只有少数例外通常不容易通过Try/Catch处理(例如System.AccessViolationException),但那些不包括套接字可能抛出的错误。

请在Exception Settings window

中确保您没有勾选要抛出的特定异常类型