前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0
SFXSSLSocket
SSL ソケット通信のためのクラスです。
#include <SFXSSLSocket.h.hpp>
class SFXSSLSocket : public SFXStorage;
SFMTYPEDEFCLASS(SFXSSLSocket)

継承図

SFXSSLSocket クラスの継承図

協調図

SFXSSLSocket クラスの協調図

解説

SFXSSLSocket は、BREW API の ISocket / ISSL インターフェースをカプセル化し、ハイレベルな SSL ソケット通信機能を提供します。

SSL ソケット通信の手順

  1. SSL ソケット ( SFXSSLSocket クラスのインスタンス ) を作成します。
  2. SFXSSLSocket::Open 関数を呼び出して SSL ソケットをオープンします。
  3. SFXSSLSocket::SetTrustMode 関数を呼び出して、検証モードを設定します。(デフォルト: SSL_TRUST_MODE_FAIL )
  4. SFXSSLSocket::Connect 関数を呼び出して TCP サーバーに SSL 接続します。 接続先のアドレスとポート番号 ( SFXSocketAddress クラスのインスタンス ) と、接続確立の通知を受け取るコールバック関数を登録します。 ドメイン名の解決は SFXSSLSocket クラス内で自動的に行われます。
  5. 接続確立の通知を受け取ると、SFXSSLSocket::Connect 関数で登録したコールバック関数が呼び出されます。
  6. SFXSSLSocket::Negotiate 関数を呼び出して、ネゴシエート ( SSL ソケット通信のための初期化 ) の完了通知を受け取るコールバック関数を登録します。
  7. ネゴシエート完了の通知を受け取ると、SFXSSLSocket::Negotiate 関数で登録したコールバック関数が呼び出されます。
  8. SFXSSLSocket::GetStreamWriter 関数を呼び出して、送信用ストリーム ( SFXBinaryStreamWriter または SFXAnsiStringStreamWriterSFXWideStringStreamWriter クラスのインスタンス ) を取得し、ストリームにデータを書き込みます。 SFXStreamWriter::Flush 関数を呼び出して、ストリームに書き込まれたデータを送信します。SFXStreamWriter::Flush 関数では、送信完了の通知を受け取るコールバック関数を登録します。
  9. データを受信するには、SFXSSLSocket::GetStreamReader 関数を呼び出して、受信用ストリーム ( SFXBinaryStreamReader または SFXAnsiStringStreamReaderSFXWideStringStreamReader クラスのインスタンス ) を取得し、SFXStreamReader::Fetch 関数を呼び出し、ストリームにデータを受信します。 SFXStreamReader::Fetch 関数の引数には、受信完了の通知を受け取るコールバック関数を登録します。コールバック関数の中で、ストリームから受信データを読み込みます。
  10. 8. と 9. の送信、受信処理を繰り返します。
  11. 最後に、SFXSSLSocket::Close 関数を呼び出して、SSL ソケットをクローズします。

例 786. SSL ソケット通信の手順

// SFXSSLSocket クラスのインスタンス _socket はクラスのメンバ変数として定義する
class MyClass {
private:
    SFXSSLSocket_socket;
    SFXAnsiStringStreamWriter _writer; // データ送信用ストリーム
    SFXAnsiStringStreamReader _reader; // データ受信用トリーム

public:
    Void Start(Void);

    // コールバック関数
    XALLBACK_DECLARE_SFXSSLSOCKET(OnConnect)
    XALLBACK_DECLARE_SFXSSLSOCKET(OnNegotiate)
    XALLBACK_DECLARE_SFXANSISTRINGSTREAMWRITER(OnFlush)
    XALLBACK_DECLARE_SFXANSISTRINGSTREAMREADER(OnFetch)
};

Void MyClass::Start(Void)
{
    SFCError error;
    SFXSocketAddress host("www.example.com:995");

    // TCP サーバーとの接続を初期化する
    if ((error = _socket.Open()) == SFERR_NO_ERROR) {
 
        // ホスト名は自動的に解決される
        // TCP サーバーに接続する
        error = _socket.Connect(host, XALLBACK_FUNCTION(OnConnect));
    }
    if (error != SFERR_NO_ERROR) { 
        // エラーが発生したとき
        _socket.Close();
    }
    return;
}

// 接続の完了が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXSSLSOCKET(MyClass, OnConnect, error)
{
    if (error == SFERR_NO_ERROR) { 
        // エラーが発生していないとき
        // ネゴシエートする ( ネゴシエートの完了は OnNegotiate 関数に通知される )
        error = _socket.Negotiate(XALLBACK_FUNCTION(OnNegotiate));
    }
    if (error != SFERR_NO_ERROR) { 
        // エラーが発生したとき
        _socket.Close();
    }
    return;
}

// ネゴシエートの完了が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXSSLSOCKET(MyClass, OnNegotiate, error)
{
    static AChar sendingMessage[] = "GET / HTTP/1.0\r\n\r\n";

    if (error == SFERR_NO_ERROR) {

        // データ送信用ストリームを取得する ( バッファサイズは 1024 )
        if ((error = _socket.GetStreamWriter(1024, &_writer))
            == SFERR_NO_ERROR) {

            // データを書き込む
            if ((error = _writer.Write(sendingMessage,
                   lengthof(sendingMessage))) == SFERR_NO_ERROR) {

                // フラッシュする(実際にデータを送信する)
                // データ送信の完了は、OnFlush 関数に通知される
                error = _writer.Flush(XALLBACK_FUNCTION(OnFlush));
            }
            if (error != SFERR_NO_ERROR) { 
                // エラーが発生したとき
                 _writer.Release();
            }
        }
    }
    if (error != SFERR_NO_ERROR) { 
       // エラーが発生したとき
       _socket.Close();
    }
    return;
}

// データ送信の完了が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXANSISTRINGSTREAMWRITER(MyClass, OnFlush, error)
{
    // 送信が終わったのでデータ送信用ストリームを解放する
    _writer.Release();

    if (error == SFERR_NO_ERROR) {

        // データ受信用ストリームを取得する ( バッファサイズは 1024 )
        if ((error = _socket.GetStreamReader(1024, &_reader))
            == SFERR_NO_ERROR) {

            // フェッチ(データ受信)する
            // データ受信の完了は、OnFetch 関数に通知される
            if ((error = _reader.Fetch(XALLBACK_FUNCTION(OnFetch)))
                != SFERR_NO_ERROR) {
                // エラーが発生したとき
               _reader.Release(); 
            }
        }
    }
    if (error != SFERR_NO_ERROR) { 
        // エラーが発生したとき
        _socket.Close();
    }
    return;
}

// データ受信の完了が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXANSISTRINGSTREAMREADER(MyClass, OnFetch, error)
{
    SFXAnsiString receivedString;

    if (error == SFERR_NO_ERROR) {

        // バッファからデータを receivedString 変数に読み込む
        _reader > receivedString;

        // 応答を表示する
        TRACE("%s", receivedString.GetCString());
    }
    // 受信が終わったのでデータ受信用ストリームを解放する
    _reader.Release();

    // ソケットをクローズする
    _socket.Close();
    return;
}

参照

SFXTCPSocket | SFXUDPSocket | ソケット通信

メンバ

コンストラクタ/デストラクタ
SFXSSLSocket( Void )
SFXSSLSocket クラスのコンストラクタです。
~SFXSSLSocket( Void )
SFXSSLSocket クラスのデストラクタです。
パブリック関数
SFCError AsSFBAStream( SFBAStreamSmpPtr result )
内部で管理されている SFBSocket クラスのインスタンスを SFBAStream クラスのインスタンスに変換します。
SFCError AsSFBSource( SFBSourceSmpPtr result )
内部で管理されている SFBSocket クラスのインスタンスを SFBSource クラスのインスタンスに変換します。
SFCError Bind( SFXSocketAddressConstRef address )
ローカルの IP アドレスとポート番号をソケットに関連付けます。
Void Cancel( Void )
SSL ソケット通信をキャンセルします。
Void Close( Void )
SSL ソケットをクローズします。
SFCError Connect( SFXSocketAddressConstRef address , CallbackSPP spp , VoidPtr reference )
SSL 接続を開始します。
SFCError GetLocalAddress( SFXSocketAddressPtr result )
ローカルの IP アドレスとポート番号を取得します。
SFCError GetRemoteAddress( SFXSocketAddressPtr result )
リモートの IP アドレスとポート番号を取得します。
SFBNetMgrSmpConstRef GetSFBNetMgr( Void )
内部で管理するネット マネージャ インターフェースを取得します。
SFBSSLSmpConstRef GetSFBSSL( Void )
内部で管理する SFBSSL クラスのインスタンスを取得します。
SFBSocketSmpConstRef GetSFBSocket( Void )
内部で管理するソケット インターフェースを取得します。
SFCError GetStreamReader( UInt32 size , SFXStreamReaderPtr result )
GetStreamReader( SFXStreamReaderPtr result )
データ受信用ストリームを取得します。
SFCError GetStreamWriter( UInt32 size , SFXStreamWriterPtr result )
GetStreamWriter( SFXStreamWriterPtr result )
データ送信用ストリームを取得します。
UInt32 GetTrustMode( Void )
SSL 検証モードを取得します。
SFCError Negotiate( CallbackSPP spp , VoidPtr reference )
ネゴシエートを行います。
SFCError Open( SInt32 linger = -1 )
SSL ソケットをオープンします。
SFCError Permit( Void )
SSL を使わない通信の設定にします。
SFCError Read( VoidPtr buffer , UInt32Ptr size )
読み込み用ストリームを使わずに SSL ソケットからデータを受信します。
SFCError ScheduleBind( CallbackSPP spp , VoidPtr reference )
Bind をスケジュールします。
SFCError ScheduleRead( CallbackSPP spp , VoidPtr reference )
読み込み用ストリームを使わない SSL ソケットからのデータ受信をスケジュールします。
SFCError ScheduleWrite( CallbackSPP spp , VoidPtr reference )
書き込み用ストリームを使わない SSL ソケットへのデータ送信をスケジュールします。
SFCError SetTrustMode( UInt32 param )
SSL 検証モードを設定します。
SFCError Write( VoidConstPtr buffer , UInt32Ptr size )
書き込み用ストリームを使わずに SSL ソケットにデータを送信します。
CallbackSPP (SFXStorage から継承)
コールバック関数を表す型です。

SFXSSLSocket::SFXSSLSocket
SFXSSLSocket クラスのコンストラクタです。
[ public, explicit ]
SFXSSLSocket(Void);

解説

コンストラクタでは SFBNetMgr クラス、SFBSocket クラス、SFBSSL クラス、SFBSSLRootCerts クラスのインスタンスは生成されません。


SFXSSLSocket::~SFXSSLSocket
SFXSSLSocket クラスのデストラクタです。
[ public, virtual ]
virtual ~SFXSSLSocket(Void);

解説

デストラクタでは SFXSSLSocket::Close 関数が呼び出されます。

登録されていたコールバックはキャンセルされます。

参照

SFXSSLSocket::Close


SFXSSLSocket::AsSFBAStream
内部で管理されている SFBSocket クラスのインスタンスを SFBAStream クラスのインスタンスに変換します。
[ public, virtual, const ]
SFCError AsSFBAStream(
    SFBAStreamSmpPtr result   // 結果の SFBAStream クラスのインスタンスへのポインタ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • ソケットが閉じているとき : SFERR_INVALID_STATE
  • 引数が null のとき : SFERR_INVALID_PARAM

参照

SFBSocket | SFBAStream


SFXSSLSocket::AsSFBSource
内部で管理されている SFBSocket クラスのインスタンスを SFBSource クラスのインスタンスに変換します。
[ public, virtual, const ]
SFCError AsSFBSource(
    SFBSourceSmpPtr result   // 結果の SFBSource クラスのインスタンスへのポインタ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • ソケットが閉じているとき : SFERR_INVALID_STATE
  • 引数が null のとき : SFERR_INVALID_PARAM
  • 変換に失敗したとき : SFERR_FAILED

解説

SFXSSLSocket::AsSFBSource 関数は内部で SFBSourceUtil クラスのインスタンスを生成し、解放します。

参照

SFBSocket | SFBSource


SFXSSLSocket::Bind
ローカルの IP アドレスとポート番号をソケットに関連付けます。
[ public ]
SFCError Bind(
    SFXSocketAddressConstRef address   // IP アドレスとポート番号
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • ソケットが閉じているとき : SFERR_INVALID_STATE
  • メモリ不足のとき : SFERR_NO_MEMORY
  • 操作がブロックされたとき : AEE_NET_WOULDBLOCK
  • その他ネットワークエラーのとき : SFBSocket::GetLastError 関数で得られるエラー値

解説

SFXSSLSocket::Bind 関数の戻り値が AEE_NET_WOULDBLOCK のときは SFXSSLSocket::ScheduleBind 関数でコールバック関数を登録し、コールバック関数の中で再度 SFXSSLSocket::Bind 関数を呼び出す必要があります。

参照

SFXSSLSocket::ScheduleBind


SFXSSLSocket::Cancel
SSL ソケット通信をキャンセルします。
[ public, virtual ]
Void Cancel(Void);

解説

登録されていたコールバックはキャンセルされます。


SFXSSLSocket::Close
SSL ソケットをクローズします。
[ public ]
Void Close(Void);

解説

SSL ソケット通信をキャンセルし、内部で使っている ISocket インターフェースや INetMgr インターフェース、ISSL インターフェースを解放します。

登録されていたコールバックはキャンセルされます。

BREW アプレットのサスペンド時は、SFXSSLSocket::Close 関数を呼び出してリソースを解放します。


SFXSSLSocket::Connect
SSL 接続を開始します。
[ public ]
SFCError Connect(
    SFXSocketAddressConstRef address   // ドメイン ( または IP アドレス ) とポート番号
    CallbackSPP spp                    // コールバック関数
    VoidPtr reference                  // コールバック関数に渡すデータ
);

引数

address

ドメイン ( または IP アドレス ) とポート番号を指定します。ドメインの解決の必要がある場合は SFXSSLSocket が自動的に行います。

spp

接続確立の通知を受け取るコールバック関数を指定します。

reference

コールバック関数に渡すデータを指定します。.

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • ソケットが開かれていない、または、既に接続されている (処理中を含む)とき : SFERR_INVALID_STATE
  • ドメイン名がないとき : SFERR_INVALID_STATE
  • SFBNetMgr インスタンスの作成に失敗したとき : SFERR_FAILED
  • メモリ不足のとき : SFERR_NO_MEMORY
  • その他ネットワークエラーのとき : SFBSocket::GetLastError 関数で得られるエラー値

解説

接続が確立されると、登録したコールバック関数に通知されます。

[Caution] 接続時のエラー取得

接続に関するエラーは、戻り値では取得できません。コールバック関数に通知されます。


SFXSSLSocket::GetLocalAddress
ローカルの IP アドレスとポート番号を取得します。
[ public, const ]
SFCError GetLocalAddress(
    SFXSocketAddressPtr result   // ローカルの IP アドレスとポート番号の格納先へのポインタ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • ソケットが開かれていない、またはバインドされていないとき : SFERR_INVALID_STATE
  • 引数が null のとき : SFERR_INVALID_PARAM
  • その他ネットワークエラーのとき : SFBSocket::GetLastError 関数で得られるエラー値

解説

[Note] ローカルの IP アドレスの変化

SSL ソケット接続の前後で、ローカルの IP アドレスは変化する可能性があります。

参照

SFXInetAddress::LocalInetAddress


SFXSSLSocket::GetRemoteAddress
リモートの IP アドレスとポート番号を取得します。
[ public, const ]
SFCError GetRemoteAddress(
    SFXSocketAddressPtr result   // 結果を格納するポインタ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 接続が確立されていないとき : SFERR_INVALID_STATE
  • 引数が null のとき : SFERR_INVALID_PARAM
  • その他ネットワークエラーのとき : SFBSocket::GetLastError 関数で得られるエラー値

解説

[Note] リモートの IP アドレスの変化

SSL ソケット接続の前後で、リモートの IP アドレスは変化する可能性があります。


SFXSSLSocket::GetSFBNetMgr
内部で管理するネット マネージャ インターフェースを取得します。
[ public, const ]
SFBNetMgrSmpConstRef GetSFBNetMgr(Void);

解説

内部で管理するネット マネージャ インターフェース ( SFBNetMgr クラスのインスタンス ) を取得します。

参照

SFBNetMgr


SFXSSLSocket::GetSFBSSL
内部で管理する SFBSSL クラスのインスタンスを取得します。
[ public, const ]
SFBSSLSmpConstRef GetSFBSSL(Void);

SFXSSLSocket::GetSFBSocket
内部で管理するソケット インターフェースを取得します。
[ public, const ]
SFBSocketSmpConstRef GetSFBSocket(Void);

解説

内部で管理するソケット インターフェース ( SFBSocket クラスのインスタンス ) を取得します。

参照

SFBSocket


SFXSSLSocket::GetStreamReader
データ受信用ストリームを取得します。
[ public, virtual ]
SFCError GetStreamReader(
    UInt32 size                 // バッファサイズ
    SFXStreamReaderPtr result   // データ受信用ストリームへのポインタ
);
[ public, virtual ]
SFCError GetStreamReader(
    SFXStreamReaderPtr result   // データ受信用ストリームへのポインタ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 引数が null のとき : SFERR_INVALID_PARAM
  • 接続が確立されていないとき : SFERR_INVALID_STATE
  • メモリ不足のとき : SFERR_NO_MEMORY

解説

データ受信用ストリームのバッファサイズを指定することも可能です。 データ受信用ストリームは、受信するデータのタイプに応じて SFXBinaryStreamReaderSFXAnsiStringStreamReader、または SFXWideStringStreamReader クラスを使い分けます。

参照

SFXSSLSocket::GetStreamWriter | SFXBinaryStreamReader | SFXAnsiStringStreamReader | SFXWideStringStreamReader


SFXSSLSocket::GetStreamWriter
データ送信用ストリームを取得します。
[ public, virtual ]
SFCError GetStreamWriter(
    UInt32 size                 // サイズ
    SFXStreamWriterPtr result   // データ送信用ストリームへのポインタ
);
[ public, virtual ]
SFCError GetStreamWriter(
    SFXStreamWriterPtr result   // データ送信用ストリームへのポインタ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 引数が null のとき : SFERR_INVALID_PARAM
  • 接続が確立されていないとき : SFERR_INVALID_STATE
  • メモリ不足のとき : SFERR_NO_MEMORY

解説

データ送信用ストリームのバッファサイズを指定することも可能です。 データ送信用ストリームは、送信するデータのタイプに応じて SFXBinaryStreamWriterSFXAnsiStringStreamWriter、または SFXWideStringStreamWriter クラスを使い分けます。

参照

SFXSSLSocket::GetStreamReader | SFXBinaryStreamWriter | SFXAnsiStringStreamWriter | SFXWideStringStreamWriter


SFXSSLSocket::GetTrustMode
SSL 検証モードを取得します。
[ public, const ]
UInt32 GetTrustMode(Void);

参照

SFXSSLSocket::SetTrustMode


SFXSSLSocket::Negotiate
ネゴシエートを行います。
[ public ]
SFCError Negotiate(
    CallbackSPP spp     // コールバック関数
    VoidPtr reference   // コールバックへ渡すデータ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 接続が確立されていないとき : SFERR_INVALID_STATE
  • SFBSSLRootCerts クラスのインスタンスの生成に失敗したとき : SFERR_FAILED
  • メモリ不足のとき : SFERR_NO_MEMORY

解説

SSL ソケット通信のネゴシエートを行います。ネゴシエートは SFXSSLSocket::Connect 関数で接続を確立した後に行います。

参照

SFXSSLSocket::Connect


SFXSSLSocket::Open
SSL ソケットをオープンします。
[ public ]
SFCError Open(
    SInt32 linger = -1   // リンガー時間( -1 のときは設定しない )
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • ソケットが既にオープンしているとき : SFERR_INVALID_STATE
  • SFBNetMgr クラス、もしくは SFBSSL クラスのインスタンスの生成に失敗したとき : SFERR_FAILED
  • 失敗したとき : AEE_NET_ERROR

解説

SFBNetMgr クラスと SFBSSL クラスのインスタンスを生成し、 SSL ソケット ( SFBSocket クラスのインスタンス ) を開きます。

[Note] リンガー時間(ネットワーク接続の待機時間)

BREW 標準の INETMGR_SetLinger() 関数で設定するリンガー時間(ネットワーク接続の待機時間)は、この関数の引数で指定できます。 デフォルト値は -1 ですが、このときはリンガー時間は設定されません。 リンガー時間の設定についての詳細は、BREW リファレンスの INETMGR_SetLinger() 関数をご覧ください。

参照

SFBNetMgr | SFBSSL | SFBSocket | BREW API INETMGR_SetLinger


SFXSSLSocket::Permit
SSL を使わない通信の設定にします。
[ public ]
SFCError Permit(Void);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 接続が確立されていないとき、またはネゴシエートが確立した後のとき : SFERR_INVALID_STATE

解説

接続を確立して、ネゴシエートを行う前やネゴシエートに失敗した後に SFXSSLSocket::Permit 関数を呼び出すと、SSL を使わない通信ができます。

参照

SFXSSLSocket::Negotiate


SFXSSLSocket::Read
読み込み用ストリームを使わずに SSL ソケットからデータを受信します。
[ public, virtual ]
SFCError Read(
    VoidPtr buffer   // 読み込んだデータを格納するバッファ
    UInt32Ptr size   // バッファのサイズ、読み込んだデータのサイズ
);

引数

buffer

読み込んだデータを格納するバッファを指定します。

size

SFXSSLSocket::Read 関数の呼び出し時には、バッファのサイズを指定します。SFXSSLSocket::Read 関数が終了すると、読み込んだデータのサイズが格納されています。

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 接続が確立されていないとき : SFERR_INVALID_STATE
  • サイズが null のとき : SFERR_INVALID_PARAM
  • 再試行が必要なとき : AEE_NET_WOULDBLOCK
  • 受信できないとき : AEE_NET_ERROR

解説

[Note] 注意
SFXSSLSocket::Read 関数が AEE_NET_WOULDBLOCK を返す場合、SFXSSLSocket::ScheduleRead 関数でコールバック関数を登録し、 コールバック関数の中で再度 SFXSSLSocket::Read 関数をスケジュールする必要があります。

参照

SFXSSLSocket::ScheduleRead


SFXSSLSocket::ScheduleBind
Bind をスケジュールします。
[ public ]
SFCError ScheduleBind(
    CallbackSPP spp     // コールバック関数
    VoidPtr reference   // コールバック関数へ渡すデータ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • ソケットが閉じているとき、またはコールバックが既に登録されているとき : SFERR_INVALID_STATE

解説

SFXSSLSocket::ScheduleBind 関数は、SFXSSLSocket::Bind 関数を使って Bind するコールバック関数を登録するために使います。

SFXSSLSocket::Bind 関数の戻り値が AEE_NET_WOULDBLOCK である場合、SFXSSLSocket::ScheduleBind 関数でコールバック関数を登録して、再び Bind を試みます。

参照

SFXSSLSocket::Bind


SFXSSLSocket::ScheduleRead
読み込み用ストリームを使わない SSL ソケットからのデータ受信をスケジュールします。
[ public, virtual ]
SFCError ScheduleRead(
    CallbackSPP spp     // コールバック関数
    VoidPtr reference   // コールバック関数に渡すデータ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 接続が確立されていないとき、またはコールバックが既に登録されているとき : SFERR_INVALID_STATE

解説

SFXSSLSocket::ScheduleRead 関数は、SFXSSLSocket::Read 関数を使ってデータ受信するコールバック関数を登録するために使います。

SFXSSLSocket::Read 関数の戻り値が AEE_NET_WOULDBLOCK である場合、SFXSSLSocket::ScheduleRead 関数でコールバック関数を登録して、再びデータ受信を試みます。

参照

SFXSSLSocket::Read


SFXSSLSocket::ScheduleWrite
書き込み用ストリームを使わない SSL ソケットへのデータ送信をスケジュールします。
[ public, virtual ]
SFCError ScheduleWrite(
    CallbackSPP spp     // コールバック関数
    VoidPtr reference   // コールバック関数へのポインタ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 接続が確立されていないとき、またはコールバックが既に登録されているとき : SFERR_INVALID_STATE

解説

SFXSSLSocket::ScheduleWrite 関数は、SFXSSLSocket::Write 関数を使ってデータ送信するコールバック関数を登録するために使います。

SFXSSLSocket::Write 関数の戻り値が AEE_NET_WOULDBLOCK である場合、SFXSSLSocket::ScheduleWrite 関数でコールバック関数を登録して、再びデータ送信を試みます。

参照

SFXSSLSocket::Write


SFXSSLSocket::SetTrustMode
SSL 検証モードを設定します。
[ public ]
SFCError SetTrustMode(
    UInt32 param   // SSL 検証モード
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • ソケットが閉じているとき : SFERR_INVALID_STATE

解説

設定された値は SFXSSLSocket::Close されるまで有効です。

この値を変更した直後に SFXSSLSocket::Connect 関数を呼び出すと、SSL_RESULT_SERV_VERS エラーが発生することがあります。

このエラーを避けるには、一度 SFXSSLSocket::Close 関数を呼び出してから SSL 検証モードを設定し、SFXSSLSocket::Connect 関数を呼び出す必要があります。

SSL 検証モードは、以下のいずれかの値を設定します。 詳細は「 BREW API リファレンス 」の ISSL_NegotiateV をご参照ください。

  • SSL_TRUST_MODE_FAIL : デフォルトです。トラストエラーがあると接続が失敗します。
  • SSL_TRUST_MODE_CHECK : トラストエラーの場合、チェックまたは無視できるように中断となります。
  • SSL_TRUST_MODE_IGNORE : すべてのトラストエラーを無視します。
  • SSL_TRUST_MODE_ALWAYS : トラストをチェックできるように常に中断します。

SFXSSLSocket::Write
書き込み用ストリームを使わずに SSL ソケットにデータを送信します。
[ public, virtual ]
SFCError Write(
    VoidConstPtr buffer   // 書き込むデータ
    UInt32Ptr size        // 書き込むデータのサイズ、書き込んだデータのサイズ
);

引数

buffer

書き込むデータを指定します。

size

SFXSSLSocket::Write 関数の呼び出し時は、書き込むデータのサイズを指定します。SFXSSLSocket::Write 関数が終了すると、実際に書き込んだデータのサイズが格納されています。

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 接続が確立されていないとき : SFERR_INVALID_STATE
  • サイズが null のとき : SFERR_INVALID_PARAM
  • 再試行が必要なとき : AEE_NET_WOULDBLOCK
  • 送信できないとき : AEE_NET_ERROR

解説

[Note] 注意
SFXSSLSocket::Write 関数が AEE_NET_WOULDBLOCK を返す場合、SFXSSLSocket::ScheduleWrite 関数でコールバック関数を登録し、 そのコールバック関数の中で再度 SFXSSLSocket::Write 関数をスケジュールする必要があります。

参照

SFXSSLSocket::ScheduleWrite