特定のポートを介してサーバーにデータをストリーミングする必要があるアプリケーションがあります。アプリケーションが起動すると、ネットワーク接続、到達可能なホストなど、さまざまなチェックが実行されます。ポートもチェックして、データを受信できることを確認したいと思います。
私はこのコードを持っています:
Private Function CheckPort(ByVal Host As String) As Boolean
Dim IPs() As IPAddress = Dns.GetHostAddresses(Host)
Dim s As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
s.Connect(IPs(0), <port # removed>)
If s.Poll(-1, SelectMode.SelectWrite) Then
Return True
End If
Return False
End Function
コードはうまく機能しますが、チェックを実行することで、アプリケーションからの後続のメッセージがポートに到達するのをうっかり妨げてしまうのではないかと懸念しています。このチェックを実行すると、ホストに送信したい実際のデータに干渉しますか? s.close()
関数を返す前に ソケットを閉じる必要がありますか?