OpenSSL APIを使用して1つのSSLクライアントを作成し、1つのSSLサーバーと対話しています。 OpenSSLサイトでは、データの書き込み後に書き込みバッファをフラッシュする必要があることを知りました。クライアントプログラムでSSL_WriteとSSL_Readを使用しています。 OpenSSLサイトでBIO_flush(BIO *)を使用してデータをフラッシュしようとすると、ここでクラッシュしています。SSL書き込みバッファをフラッシュする方法はありません
私が使用していますSSLライブラリがに任意の他の方法があり は、だから私はちょうど知りたいと思った:-(..私はBIO_flushはバッファを書き込み読み出しバッファを点滅させたりするかどうかについては明らかではないよ。ここ
this siteからもらいましたここで
は私のクライアントプログラムの詳細にありますか?... SSLの書き込みバッファをフラッシュする。SSL_new- ティンTCPソケットとサーバ
- SSL_set_bio(MSSL、mBio、mBio)を使用して、SSLオブジェクトにBIOオブジェクトを設定するBIO_new_socket(socket_id、BIO_NOCLOSE)
- を使用してBIOオブジェクト(mBio)の作成と接続します。
- SSL_set_fd(mSsl、socket_id);を使用してソケットをSSLオブジェクトに設定する。
- SSL_Connect(mSsl)を使用してサーバーとSSL接続します。
上記の手順の後、私は書き込みと読み取りのための2つの別々のスレッドを開始しています。書き込みスレッドはSSL_writeを使用してサーバーにデータを書き込み、読み取りスレッドはSSL_Readを使用してサーバーからデータを読み取ります。
SSL_Writeを使用して各パケットを書き込んだ後の書き込みスレッドで、私はBIO_flush(mBio)を呼び出しています。
プログラム全体で、私はバイオバッファをフラッシュするためにこの場所でのみmBioオブジェクトを直接使用しています。
いくつかのパケットの送信を開始すると、BIO_flushでプログラムがクラッシュします...ダンプごとに、BIO_ctrl関数でそのことが示されます。私はそれ以上何も得ていない。
私は上記のリンクを提供し、同じ問題に直面しているライブラリを使用しましたか?はいの場合は、解決策をご存知の場合はお知らせください。
BIO_flush()を使用するスレッド同期ルールはありますか?私はBIO_flushへの呼び出しを意味しますSSL_Readは同じように発生しません...?