type=module
superclass=
included=
extended=
dynamically_included=
dynamically_extended=
library=openssl
aliases=
aliasof=

[[c:OpenSSL::SSL::SSLSocket]] にバッファリング付きIO機能を提供する
モジュールです。


[[c:IO]] クラスと同様のメソッドを提供しています。

内部的には sysread, syswrite, sysread_nonblock, syswrite_nonblock, 
sysclose といった [[c:OpenSSL::SSL::SSLSocket]] が提供するメソッドを
利用し、 [[c:OpenSSL::SSL::SSLSocket]] がラップしているソケット
をバッファ経由でデータを暗号化してやりとりを行います。

=== IO との違い
このクラスは IO クラスと同様のメソッドを提供していますが、
以下の点で異なります。これらは今後のバージョンで変更(改善)
される可能性があります。
  * gets や readlines など行読み込みメソッドの引数(行区切り文字列の指定)
    の意味が異なります。例えば "" で連続改行を区切りとみなすモードはなく
    nil を渡すとエラーとなります
  * read_nonblock が書き込み不可能で例外を発生させたり、
    write_nonblock が読み込み不可能で例外を発生させたりします。
    これは暗号化通信でのデータの送信には双方向のメッセージの
    やりとりが必要な場合があるためです。
  * 1.9 では encoding 関連を設定しません
  * 1.9 で each_byte が String をブロックに渡します
