OpenSSLを使用してHTTPSサーバーに接続し、データを送信して応答を読み取ります。接続を開いたままにして、データが利用可能になり次第読み取る必要があります。
私はBIOを使用しており、でデータを読み取りますBIO_read
。
問題は、ソケットを使用して待機しているのにselect()
、読み取り可能なDATAがあるかどうかわからないことです。
私は試しました(select()
読み取り可能なデータがあることを確認した後):
- BIO_eof
- BIO_pending
- BIO_should_read
- SSL_pending
- SSL_peek
しかし、それは機能していないようです。BIO_eof
falseを返し、他の関数でデータをチェックしますが、たとえば、BIO_pending
使用可能なデータがある場合でもfalseを返します。
これらの関数に基づいてtrueを返すとSYSCALL_ERROR
、何かがおかしいことになります。
ソケットで利用可能な読み取りデータがあるかどうかを確認するにはどうすればよいですか?SSL/BIO_read
が呼び出されたときに、これらの関数を使用せずに読み取ることができるデータがあることを確認する必要があります。もちろん、私はそれらを使用できますが、データを失うことはありません。
助言がありますか?