1

しばらく前に、vb.net でいくつかの基本的な HTTP Web サーバーを作成しました。IO のブロックを回避しようとしたため、基本的に現在のすべての接続に対して 1 つのポーリング スレッドを作成しました。

While True
    For Each oNetworkstream In lstNetworkstream
        If oNetworkstream.DataAvailable Then
            'Read from stream
        End If
    Next
End While

したがって、接続に新しいデータがあるときはいつでも、それを読み取ることができました。それ以外の場合は、すぐに次の接続を確認します。

今、私はhttpsでウェブサーバーを拡張しています。したがって、.Net SslStream クラスを使用しました。同じ原則を適用したい (すべてのストリームを読み取るための 1 つのポーリング スレッド)

.DataAvailable プロパティがないため、幅 .Length > 0 を試しましたが、これにより NotSupportedException が発生します (このストリームはシーク操作をサポートしていません)

Dim oSslStream As New SslStream(oStream, False)
oSslStream.AuthenticateAsServer(moCertificateKeyPair)
MsgBox(oSslStream.Length)

では、スレッドをブロックせずに、特定の復号化されたストリームに利用可能なデータがあるかどうかを判断するにはどうすればよいでしょうか?

4

1 に答える 1