2016-08-29 11 views
-1

リモートサーバーに接続し、そのポートのデータを受信するVB.Netアプリケーションを作成しています。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、ポート)ラインでスローされます「対象のコンピュータによって拒否されたため、接続していません」にスローされるエラー。

接続に失敗した場合、Catchセクションのコードを実行すると思っていましたか?

+0

に、あなたが投げたときにブレークする特定の例外の種類をチェックされていないことを確認してください?その場合は、デバッガが処理されているかどうかにかかわらず、例外を発生させるようにデバッガを設定しているためです。 –

+0

[例外設定]ウィンドウ(https://msdn.microsoft.com/en-us/library/x85tt0dd.aspx)で例外タイプが常に破損していないことを確認しましたか? –

+0

それはヴィンセントだった、私は前のプロジェクトでそれを変更したに違いない。すべてをデフォルトにリセットすると固定されます。私はあなたの答えを受け入れることができませんが、Up/Down/Acceptボタンを表示するには小さすぎるからです:-( –

答えて

1

例外がスローされたら、Catchブロックで処理する必要があります。 Try/Catch(例:System.AccessViolationException)で処理するのは一般的にはあまり簡単ではない例外がいくつかありますが、ソケットで発生する可能性のあるエラーは含まれていません。

あなたのコードは正常に見えるので、あなたは、デバッガの下で実行する場合にのみ起こるんException Settings window

関連する問題