SophiaFramework UNIVERSE 5.3 |
SFXSSLSocket クラスは、 SSL クライアントを実装する機能だけを提供します。 SSL サーバーを実装する機能は提供しません。
このクラスでは、ストリームを利用したデータ送受信が可能です。
ストリームを利用しない場合は SFXSSLSocket::Write / SFXSSLSocket::Read 関数を使用してデータを送受信します。
注意 | |
---|---|
SFXSSLSocket クラスは、 BREW API の ISocket / ISSL インターフェースをカプセル化し、 ハイレベルな SSL ソケット通信機能を提供します。 |
注意 | |
---|---|
SFXSSLSocket クラスは、 SFXTCPSocket クラスで実装されているサーバー機能を提供しません。 |
SSL クライアントの実装
SSL クライアントは、 SFXSSLSocket クラスを使用して以下の手順で実装します。
例 851. SSL クライアントの実装
// SSL ソケット (_socket) はクラスのメンバ変数として定義する class MyClass { private: SFXSSLSocket_socket; // SSL ソケット 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) { // ホスト名は自動的に解決される // サーバーに接続する error = _socket.Connect(host, XALLBACK_INTERNAL(OnConnect)); } if (error != SFERR_NO_ERROR) { // エラーが発生したとき // ソケットを閉じる _socket.Close(); } return; } // 接続要求の結果が通知されるコールバック関数 XALLBACK_IMPLEMENT_SFXSSLSOCKET(MyClass, OnConnect, error) { if (error == SFERR_NO_ERROR) { // エラーが発生していないとき // サーバーとの SSL ネゴシエーションを行う // ※ SSL ネゴシエーションの結果は OnNegotiate 関数に通知される error = _socket.Negotiate(XALLBACK_INTERNAL(OnNegotiate)); } if (error != SFERR_NO_ERROR) { // エラーが発生したとき // ソケットを閉じる _socket.Close(); } return; } // SSL ネゴシエーションの結果が通知されるコールバック関数 XALLBACK_IMPLEMENT_SFXSSLSOCKET(MyClass, OnNegotiate, error) { static AChar message[] = "GET / HTTP/1.0\r\n\r\n"; if (error == SFERR_NO_ERROR) { // データ送信用ストリームを取得する // ※ size 引数を指定しているのでストリームバッファは固定長(バッファサイズ: 1024 バイト) if ((error = _socket.GetStreamWriter(1024, &_writer)) == SFERR_NO_ERROR) { // message 変数からストリームバッファにデータを書き込む if ((error = _writer.Write(message, lengthof(message))) == SFERR_NO_ERROR) { // フラッシュを行う: 実際にストリームバッファからソケットにデータを送信する // ※ データ送信(フラッシュ)の結果は、OnFlush 関数に通知される error = _writer.Flush(XALLBACK_INTERNAL(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) { // データ受信用ストリームを取得する // ※ size 引数を指定しているのでストリームバッファは固定長(バッファサイズ: 1024 バイト) if ((error = _socket.GetStreamReader(1024, &_reader)) == SFERR_NO_ERROR) { // フェッチを行う: 実際にソケットからストリームバッファにデータを受信する // ※ データ受信(フェッチ)の結果は、OnFetch 関数に通知される if ((error = _reader.Fetch(XALLBACK_INTERNAL(OnFetch))) != SFERR_NO_ERROR) { // エラーが発生したとき // データ受信用ストリームを解放する _reader.Release(); } } } if (error != SFERR_NO_ERROR) { // エラーが発生したとき // ソケットを閉じる _socket.Close(); } return; } // データ受信(フェッチ)の結果が通知されるコールバック関数 XALLBACK_IMPLEMENT_SFXANSISTRINGSTREAMREADER(MyClass, OnFetch, error) { SFXAnsiString string; if (error == SFERR_NO_ERROR) { // ストリームバッファから string 変数にデータを読み込む _reader >> string; // string 変数の内容をデバッグウィンドウに表示する TRACE("%s", string.GetCString()); } // 受信が終わったのでデータ受信用ストリームを解放する _reader.Release(); // ソケットを閉じる _socket.Close(); return; }
コンストラクタ/デストラクタ |
---|
SFXSSLSocket( Void ) SFXSSLSocket クラスのコンストラクタです。
|
~SFXSSLSocket( Void ) SFXSSLSocket クラスのデストラクタです。
|
パブリック関数 | |
---|---|
SFCError |
AsSFBAStream(
SFBAStreamSmpPtr result
) SFBAStream インスタンスに変換します。
|
SFCError |
AsSFBSource(
SFBSourceSmpPtr result
) SFBSource インスタンスに変換します。
|
SFCError |
Bind(
SFXSocketAddressConstRef address
) Bind (ソケットに端末のローカル IP アドレスとポート番号を関連付ける操作)を行います。
|
Void |
Cancel( Void ) ソケット通信における各種操作をキャンセルします。
|
Void |
Close( Void ) ソケットを閉じます。
|
SFCError |
Connect(
SFXSocketAddressConstRef address
, CallbackSPP spp
, VoidPtr reference
) サーバーに接続リクエストを送信して、接続を確立します。
|
SFCError |
GetLocalAddress(
SFXSocketAddressPtr result
) ローカル IP アドレスとポート番号を取得します。
|
SFCError |
GetRemoteAddress(
SFXSocketAddressPtr result
) リモート IP アドレスとポート番号を取得します。
|
SFBNetMgrSmpConstRef |
GetSFBNetMgr( Void ) 内部で管理する SFBNetMgr インスタンスを取得します。
|
SFBSSLSmpConstRef |
GetSFBSSL( Void ) 内部で管理する SFBSSL インスタンスを取得します。
|
SFBSocketSmpConstRef |
GetSFBSocket( Void ) 内部で管理する SFBSocket インスタンスを取得します。
|
SFCError |
GetStreamReader(
UInt32 size
, SFXStreamReaderPtr result
) データ受信用ストリームを取得します。
|
SFCError |
GetStreamReader(
SFXStreamReaderPtr result
) データ受信用ストリームを取得します。
|
SFCError |
GetStreamWriter(
UInt32 size
, SFXStreamWriterPtr result
) データ送信用ストリームを取得します。
|
SFCError |
GetStreamWriter(
SFXStreamWriterPtr result
) データ送信用ストリームを取得します。
|
UInt32 |
GetTrustMode( Void ) SSL 認証モードを取得します。
|
SFCError |
Negotiate(
CallbackSPP spp
, VoidPtr reference
) ネゴシエートを行います。
|
SFCError |
Open(
SInt32 linger = -1
) ソケットを開きます。
|
SFCError |
Permit( Void ) SSL を使わない通信の設定にします。
|
SFCError |
Read(
VoidPtr buffer
, UInt32Ptr size
) Read(ストリームを使用しないソケットからのデータ受信)を行います。
|
SFCError |
ScheduleBind(
CallbackSPP spp
, VoidPtr reference
) Bind(ソケットに端末のローカル IP アドレスとポート番号を関連付ける操作)をスケジュールします。
|
SFCError |
ScheduleRead(
CallbackSPP spp
, VoidPtr reference
) Read(ストリームを使用しないソケットからのデータ受信)をスケジュールします。
|
SFCError |
ScheduleWrite(
CallbackSPP spp
, VoidPtr reference
) Write(ストリームを使用しないソケットへのデータ送信)をスケジュールします。
|
SFCError |
SetTrustMode(
UInt32 param
) SSL 認証モードを設定します。
|
SFCError |
Write(
VoidConstPtr buffer
, UInt32Ptr size
) Write(ストリームを使用しないソケットへのデータ送信)を行います。
|
型 |
---|
CallbackSPP
(SFXStorage から継承)
ストレージクラスで使用するコールバック関数の型です。
|
[ public, explicit ] SFXSSLSocket(Void);
コンストラクタでは SFBNetMgr クラス、SFBSocket クラス、SFBSSL クラス、SFBSSLRootCerts クラスのインスタンスは生成されません。
[ public, virtual ] virtual ~SFXSSLSocket(Void);
[ public, virtual, const ] SFCError AsSFBAStream( SFBAStreamSmpPtr result // SFBAStream インスタンスへのポインタ );
SFBAStream インスタンスへのポインタを指定します。
この関数は、 このストレージが内部で管理する SFBSocket インスタンスを SFBAStream インスタンスに変換します。
result 引数には、変換結果である SFBAStream インスタンスへのポインタが返ります。
注意 | |
---|---|
この関数により、 このストレージを SFBAStream インスタンスとして扱えます。 |
[ public, virtual, const ] SFCError AsSFBSource( SFBSourceSmpPtr result // SFBSource インスタンスへのポインタ );
SFBSource インスタンスへのポインタを指定します。
この関数は、 このストレージが内部で管理する SFBSocket インスタンスを SFBSource インスタンスに変換します。
result 引数には、変換結果である SFBSource インスタンスへのポインタが返ります。
注意 | |
---|---|
この関数は、内部で BREW API の BREW API ISOURCEUTIL_SourceFromSocket 関数を呼び出します。 |
注意 | |
---|---|
この関数により、 このストレージを SFBSource インスタンスとして扱えます。 |
[ public ] SFCError Bind( SFXSocketAddressConstRef address // 端末のローカル IP アドレスとポート番号: ローカル IP アドレスには SFXInetAddress::LoopbackInetAddress() または SFXInetAddress.AnyInetAddress() のいずれかを指定する );
この関数は、Bind (ソケットに端末のローカル IP アドレスとポート番号を関連付ける操作)を行います。
ローカル IP アドレスは、 携帯端末内部でループバック通信するときは SFXInetAddress::LoopbackInetAddress 関数の戻り値、 外部と通信するときは SFXInetAddress::AnyInetAddress 関数の戻り値を指定します。 BREW SDK の制約により、これら以外の値はサポートされません。
この関数の戻り値が AEE_NET_WOULDBLOCK の場合、 SFXSSLSocket::ScheduleBind 関数でコールバック関数を登録し、 コールバック関数の中で再度この関数を呼び出す必要があります。
ポート番号のバインド | |
---|---|
クライアント側ではこの関数の呼び出しを省略できますが、 その場合はデフォルトのポート番号がソケットに Bind されます。 |
注意 | |
---|---|
この関数は、 内部で SFBSocket::Bind 関数を呼び出します。 |
前提条件 | |
---|---|
この関数を呼び出す前に、 このソケットは SFXSSLSocket::Open 関数を呼び出して 開いている必要があります 。 |
注意 | |
---|---|
SFXSSLSocket クラスは SSL サーバー機能を提供しませんので、 SSL サーバーを構築する目的でこの関数を利用することはできません。 |
SFXSSLSocket::Open | SFXSSLSocket::ScheduleBind | SFXInetAddress::LoopbackInetAddress | SFXInetAddress::AnyInetAddress | SFXSocketAddress | SFBSocket::Bind | BREW API ISOCKET_Bind | BREW API ISOCKET_GetLastError | BREW API AEE_BREW_LOOPBACK | BREW API AEE_INADDR_LOOPBACK | BREW API AEE_INADDR_ANY
[ public, virtual ] Void Cancel(Void);
この関数は、ソケット通信における各種操作をキャンセルします。
具体的には、 キャンセル対象となる操作で登録したコールバックをキャンセルし、 その操作を行う直前の状態(1 つ前の状態)に戻します。
キャンセルの対象となる操作とキャンセル内容は、以下の表の通りです。
表 219. キャンセルの対象となる操作とキャンセル内容
キャンセルの対象となる操作 | キャンセル内容 |
---|---|
SFXSSLSocket::Connect 関数によるサーバーへの接続 | コールバックをキャンセルし、SFXSSLSocket::Open 関数を実行した直後の状態に戻します。 |
SFXSSLSocket::ScheduleBind 関数による Bind のスケジュール | コールバックをキャンセルし、SFXSSLSocket::Open 関数を実行した直後の状態に戻します。 |
SFXSSLSocket::ScheduleRead 関数による読み込み(受信)のスケジュール | コールバックをキャンセルし、SFXSSLSocket::Connect 関数を実行した直後の接続が確立している状態に戻します。 |
SFXSSLSocket::ScheduleWrite 関数による書き込み(送信)のスケジュール | コールバックをキャンセルし、SFXSSLSocket::Connect 関数を実行した直後の接続が確立している状態に戻します。 |
SFXSSLSocket::Negotiate 関数によるネゴシエート | コールバックをキャンセルし、SFXSSLSocket::Connect 関数を実行した直後の接続が確立している状態に戻します。 |
注意 | |
---|---|
この関数は、SFXSSLSocket::Close 関数から呼び出されます。 |
SFXSSLSocket::Open | SFXSSLSocket::Connect | SFXSSLSocket::ScheduleBind | SFXSSLSocket::ScheduleRead | SFXSSLSocket::ScheduleWrite | SFXSSLSocket::Negotiate | SFXSSLSocket::Close
[ public ] Void Close(Void);
この関数は、このソケットを閉じます(このソケットを終了します)。
具体的には、 SFXSSLSocket::Cancel 関数を呼び出してソケット通信の各種操作をキャンセルし、 内部で管理している SFBNetMgr インスタンス、SFBSocket インスタンス、 および SFBSSL インスタンスを解放します。
注意 | |
---|---|
登録されていたコールバックはキャンセルされます。 |
注意 | |
---|---|
この関数は、SFXSSLSocket::~SFXSSLSocket デストラクタから呼び出されます。 |
Tip | |
---|---|
サスペンド時は、この関数を呼び出してリソースを解放します。 |
SFXSSLSocket::Open | SFXSSLSocket::Cancel | SFXSSLSocket::~SFXSSLSocket | SFBNetMgr | SFBSocket | SFBSSL | BREW API INetMgr | BREW API ISocket | BREW API ISSL
[ public ] SFCError Connect( SFXSocketAddressConstRef address // サーバーのドメイン名(または IP アドレス)とポート番号 CallbackSPP spp // 接続確立の通知を受け取るコールバック関数 VoidPtr reference // コールバック関数に渡すデータ(参照値) );
サーバーのドメイン名(または IP アドレス)とポート番号を指定します。 (※)ドメイン名の解決は、内部で自動的に行われます。
接続確立の通知を受け取るコールバック関数を指定します。
コールバック関数に渡すデータを指定します。
この関数は、引数に指定されたサーバーに接続リクエストを送信して、接続を確立します。 接続確立後は、このソケットを使用してサーバーと通信を行います。
接続確立についての結果(エラー値)は、この関数の戻り値では取得できません。 以下のエラー値が、引数に指定したコールバック関数の第 1 引数に通知されます。
コールバック関数が呼び出されるまでは、「Connect 中の状態」になります。 コールバック関数が呼び出されたとき、 接続が確立している場合は、「接続確立の状態」になり、 失敗した場合は、この関数を呼び出す直前の状態(ソケットが開いている状態)に戻ります。
コールバック関数に接続確立の通知が行われる前に、 SFXSSLSocket::Cancel 関数を呼び出すと、 接続の確立はキャンセルされ、この関数を呼び出す直前の状態(ソケットが開いている状態)に戻ります。
なお、この関数の戻り値がエラー(SFERR_NO_ERROR 以外の値)の場合、コールバック関数は呼び出されません。
注意 | |
---|---|
この関数は、 内部で SFBSocket::Connect 関数を呼び出します。 |
前提条件 | |
---|---|
このソケットは SFXSSLSocket::Open 関数を呼び出した直後の開いた状態である必要があります。 |
SFXSSLSocket::Open | SFXSSLSocket::Cancel | SFBSocket::Connect | SFXSocketAddress | SFBNetMgr | SFXStorage::CallbackSPP | BREW API INetMgr | BREW API ISOCKET_Connect | BREW API ISOCKET_GetLastError | BREW API ネットワークエラーコード
[ public, const ] SFCError GetLocalAddress( SFXSocketAddressPtr result // ローカル IP アドレスとポート番号の格納先へのポインタ );
この関数は、このソケットのローカル IP アドレスとポートを取得します。
実際の物理的なローカル IP アドレスは、接続確立後のデータ送受信用ソケットから取得できます。 それまでの間は、SFXSSLSocket::Bind 関数で設定した値が返ります。
Tip | |
---|---|
実際の物理的なローカル IP アドレスは、 SFXInetAddress::LocalInetAddress 関数を呼び出して取得することも可能です。 |
前提条件 | |
---|---|
ローカル IP アドレスとポートを取得するには、 このソケットが SFXSSLSocket::Bind 関数を呼び出してバインドしている、 または このソケットが SFXSSLSocket::Connect 関数により接続を確立している必要があります。 |
SFXSSLSocket::Bind | SFXSSLSocket::Connect | SFXInetAddress::LocalInetAddress | SFXSocketAddress | BREW API ISOCKET_GetLastError
[ public, const ] SFCError GetRemoteAddress( SFXSocketAddressPtr result // リモート IP アドレスとポート番号の格納先へのポインタ );
この関数は、このソケットに接続されたピアのリモート IP アドレスとポートを取得します。
注意 | |
---|---|
この関数は、 内部で SFBSocket::GetPeerName 関数を呼び出します。 |
前提条件 | |
---|---|
リモート IP アドレスとポートを取得するには、 このソケットが SFXSSLSocket::Connect 関数により接続を確立している必要があります。 |
SFBSocket::GetPeerName | SFXSSLSocket::Connect | SFXSocketAddress | BREW API ISOCKET_GetPeerName | BREW API ISOCKET_GetLastError
[ public, const ] SFBNetMgrSmpConstRef GetSFBNetMgr(Void);
このソケットが内部で管理する SFBNetMgr インスタンス
この関数は、 このソケットが内部で管理する SFBNetMgr インスタンスを取得します。
[ public, const ] SFBSSLSmpConstRef GetSFBSSL(Void);
このソケットが内部で管理する SFBSSL インスタンス
この関数は、 このソケットが内部で管理する SFBSSL インスタンスを取得します。
[ public, const ] SFBSocketSmpConstRef GetSFBSocket(Void);
このソケットが内部で管理する SFBSocket インスタンス
この関数は、 このソケットが内部で管理する SFBSocket インスタンスを取得します。
[ public, virtual ] SFCError GetStreamReader( UInt32 size // バッファサイズ SFXStreamReaderPtr result // データ受信用ストリームへのポインタ );
[ public, virtual ] SFCError GetStreamReader( SFXStreamReaderPtr result // データ受信用ストリームへのポインタ );
この関数は、データ受信用ストリームを取得します。
size 引数を指定する場合、ストリームバッファは指定したサイズで固定です。 指定しない場合は、ストリームバッファは可変長になり、 内部的に SFXElasticStreamReader クラスが利用されます。
Tip | |
---|---|
データ受信用ストリームは、受信するデータの種類に応じて SFXBinaryStreamReader、 SFXAnsiStringStreamReader、または SFXWideStringStreamReader クラスを使い分けます。 |
前提条件 | |
---|---|
データ受信用ストリームを取得するには、 SFXSSLSocket::Connect 関数により接続を確立している必要があります。 |
SFXSSLSocket::GetStreamWriter | SFXBinaryStreamReader | SFXAnsiStringStreamReader | SFXWideStringStreamReader | SFXSSLSocket::Connect | ストリームバッファ
[ public, virtual ] SFCError GetStreamWriter( UInt32 size // バッファサイズ SFXStreamWriterPtr result // データ送信用ストリームへのポインタ );
[ public, virtual ] SFCError GetStreamWriter( SFXStreamWriterPtr result // データ送信用ストリームへのポインタ );
この関数は、データ送信用ストリームを取得します。
size 引数を指定する場合、ストリームバッファは指定したサイズで固定です。 指定しない場合は、ストリームバッファは可変長になり、 内部的に SFXElasticStreamWriter クラスが利用されます。
Tip | |
---|---|
データ送信用ストリームは、送信するデータの種類に応じて SFXBinaryStreamWriter、 SFXAnsiStringStreamWriter、または SFXWideStringStreamWriter クラスを使い分けます。 |
前提条件 | |
---|---|
データ送信用ストリームを取得するには、 SFXSSLSocket::Connect 関数により接続を確立している必要があります。 |
SFXSSLSocket::GetStreamReader | SFXBinaryStreamWriter | SFXAnsiStringStreamWriter | SFXWideStringStreamWriter | SFXSSLSocket::Connect | ストリームバッファ
[ public, const ] UInt32 GetTrustMode(Void);
SSL 認証モード
この関数は、SSL 認証モードを取得します。
以下の 4 種類の SSL 認証モードの何れかが返却されます。
[ public ] SFCError Negotiate( CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数に渡すデータ(参照値) );
この関数は、SSL ソケットのネゴシエートを行います。 ネゴシエートは SFXSSLSocket::Connect 関数で接続を確立した後に行います。
注意 | |
---|---|
この関数は、 内部で SFBSocket::Writeable / SFBSSL::SetSocket / SFBSSL::NegotiateV 関数を呼び出します。 また、SFBSSLRootCerts インスタンスを作成し、 BREW API ISSL_NegotiateV 関数に渡す BREW API WebOpt 構造体の設定を行います。 |
SFXSSLSocket::Connect | SFBSSL::NegotiateV | SFBSocket::Writeable | SFBSSL::SetSocket | SFBSSLRootCerts | SFXStorage::CallbackSPP | BREW API ISSL_SetSocket | BREW API ISSL_NegotiateV | BREW API ISOCKET_Writeable | BREW API ISSLRootCerts | BREW API IWebOpts | BREW API WebOpt
この関数は、このソケットを開きます(このソケットを初期化します)。
具体的には、 SFXSSLSocket クラスが内部で管理する SFBNetMgr インスタンスを生成し、 BREW API INETMGR_OpenSocket 関数を呼び出して AEE_SOCK_STREAM タイプのソケット(SFBSocket インスタンス)を生成します。 また、SFXSSLSocket::SetTrustMode 関数で設定する SSL 認証モードを SSL_TRUST_MODE_FAIL に設定します。
SFBNetMgr / SFBSocket インスタンスは、 SFXSSLSocket::GetSFBNetMgr / SFXSSLSocket::GetSFBSocket 関数で取得することが可能です。 これらのインスタンスを利用して、詳細な設定が可能です。
リンガー時間(ネットワーク接続の待機時間) | |
---|---|
BREW API INETMGR_SetLinger 関数で設定するリンガー時間(ネットワーク接続の待機時間)は、この関数の linger 引数で指定できます。 デフォルト値は -1 ですが、このときはリンガー時間は設定されません。 UINT16_MAXIMUM よりも大きなリンガー時間を設定すると、SFERR_INVALID_PARAM エラーが返ります。 リンガー時間の設定についての詳細は、 BREW API INETMGR_SetLinger 関数を参照してください。 |
Tip | |
---|---|
SFXSSLSocket::Close 関数を呼び出すと、 このソケットは閉じます。 |
SFXSSLSocket::Close | SFXSSLSocket::GetSFBNetMgr | SFXSSLSocket::GetSFBSocket | SFXSSLSocket::SetTrustMode | SFBNetMgr | SFBSocket | BREW API INetMgr | BREW API ISocket | BREW API ISSL | BREW API INETMGR_SetLinger | BREW API INETMGR_OpenSocket
[ public ] SFCError Permit(Void);
この関数は、SSL を使わない通信の設定にします。
接続を確立して、ネゴシエートを行う前やネゴシエートに失敗した後にこの関数を呼び出すと、 SSL を使わない通信、つまり、TCP 通信が行われます。
SFXSSLSocket::Permit 関数の存在意義 | |
---|---|
SFXSSLSocket::Permit 関数の目的は、SFXSSLSocket クラスを SFXTCPSocket クラスのように利用することです。 あるアプリでは、 設定内容によって SSL 通信を行ったり、TCP 通信を行います。 このとき、SFXSSLSocket::Permit 関数を呼び出すと、 SFXSSLSocket クラスは TCP モードとなり、 SSL 通信ではなく、TCP 通信を行います(SFXTCPSocket クラスを使用する必要ありません)。 ※ SFXPOP3 / SFXSMTP 関数では、 この関数により、SFXSSLSocket クラスだけで TCP 通信と SSL 通信を行っています。 |
[ public, virtual ] SFCError Read( VoidPtr buffer // 読み込むバッファ UInt32Ptr size // 呼び出す前: データを読み込むバッファのサイズ。戻り値: 実際に読み込んだデータのサイズ );
データを読み込むバッファを指定します。
この関数を呼び出す時は、データを読み込むバッファのサイズを指定します。 この関数が戻ると、実際にバッファに読み込んだデータのサイズが格納されています。
この関数は、Read(ストリームを使用しないソケットからのデータ受信)を行います。
ピアが接続を切断した場合、 この関数は SFERR_NO_ERROR を返し、かつ、 size 引数のポインタが指す場所に 0 が戻ります。
※ この関数が AEE_NET_WOULDBLOCK を返す場合、 SFXSSLSocket::ScheduleRead 関数でコールバック関数を登録し、 コールバック関数の中で再度この関数を呼び出して Read を行う必要があります。
注意 | |
---|---|
この関数は、 内部で SFBAStream::Read 関数を呼び出します。 |
前提条件 | |
---|---|
この関数を呼び出す前に、 このソケットは SFXSSLSocket::Connect 関数を呼び出して 接続を確立している必要があります 。 |
[ public ] SFCError ScheduleBind( CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数に渡すデータ(参照値) );
この関数は、Bind(ソケットに端末のローカル IP アドレスとポート番号を関連付ける操作)をスケジュールします。
具体的には、 SFXSSLSocket::Bind 関数を使用して Bind するコールバック関数を登録します。 登録されたコールバック関数は、Bind が可能になると BREW AEE により呼び出されます。
コールバック関数が呼び出されるまでは、「Bind スケジュール中の状態」になります。 コールバック関数が呼び出されると、この関数を呼び出す直前の状態(ソケットが開いている状態)に戻ります。
コールバック関数が呼び出される前に、 SFXSSLSocket::Cancel 関数を呼び出すと、 Bind のスケジュールはキャンセルされ、この関数を呼び出す直前の状態(ソケットが開いている状態)に戻ります。
なお、この関数の戻り値がエラー(SFERR_NO_ERROR 以外の値)の場合は、コールバック関数は呼び出されません。
※ SFXSSLSocket::Bind 関数の戻り値が AEE_NET_WOULDBLOCK である場合、 この関数を使用してコールバック関数を登録し、 再び Bind を試みます。
注意 | |
---|---|
この関数は、 内部で SFBSocket::Writeable 関数を呼び出します。 |
前提条件 | |
---|---|
この関数を呼び出す前に、 このソケットは SFXSSLSocket::Open 関数を呼び出して 開いている必要があります。 但し、接続が確立されている、もしくは、確立中の場合は、 SFERR_INVALID_STATE エラーが返ります。 また、既に Bind がスケジュールされている場合も、SFERR_INVALID_STATE エラーが返ります。 |
[ public, virtual ] SFCError ScheduleRead( CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数に渡すデータ(参照値) );
この関数は、Read(ストリームを使用しないソケットからのデータ受信)をスケジュールします。
具体的には、 SFXSSLSocket::Read 関数を使用して、 Read を行うコールバック関数を登録します。 登録されたコールバック関数は、Read が可能になると BREW AEE により呼び出されます。
コールバック関数が呼び出されるまでは、「Read スケジュール中の状態」になります。 コールバック関数が呼び出されると、この関数を呼び出す直前の状態(接続が確立している状態)に戻ります。
コールバック関数が呼び出される前に、 SFXSSLSocket::Cancel 関数を呼び出すと、 Read のスケジュールはキャンセルされ、この関数を呼び出す直前の状態(接続が確立している状態)に戻ります。
なお、この関数の戻り値がエラー(SFERR_NO_ERROR 以外の値)の場合、コールバック関数は呼び出されません。
※ SFXSSLSocket::Read 関数の戻り値が AEE_NET_WOULDBLOCK である場合、 この関数を使用してコールバック関数を登録し、 再び Read を試みます。
注意 | |
---|---|
この関数は、 内部で SFBAStream::Readable 関数を呼び出します。 |
前提条件 | |
---|---|
この関数を呼び出す前に、 このソケットは SFXSSLSocket::Connect 関数を呼び出して 接続を確立している必要があります 。 また、既に Read がスケジュールされている場合は、SFERR_INVALID_STATE エラーが返ります。 |
[ public, virtual ] SFCError ScheduleWrite( CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数に渡すデータ(参照値) );
この関数は、Write(ストリームを使用しないソケットへのデータ送信)をスケジュールします。
具体的には、 SFXSSLSocket::Write 関数を使用して、 Write を行うコールバック関数を登録します。 登録されたコールバック関数は、Write が可能になると BREW AEE により呼び出されます。
コールバック関数が呼び出されるまでは、「Write スケジュール中の状態」になります。 コールバック関数が呼び出されると、この関数を呼び出す直前の状態(接続が確立している状態)に戻ります。
コールバック関数が呼び出される前に、 SFXSSLSocket::Cancel 関数を呼び出すと、 Write のスケジュールはキャンセルされ、この関数を呼び出す直前の状態(接続が確立している状態)に戻ります。
なお、この関数の戻り値がエラー(SFERR_NO_ERROR 以外の値)の場合、コールバック関数は呼び出されません。
※ SFXSSLSocket::Write 関数の戻り値が AEE_NET_WOULDBLOCK である場合、 この関数を使用してコールバック関数を登録し、 再び Write を試みます。
注意 | |
---|---|
この関数は、 内部で SFBSocket::Writeable 関数を呼び出します。 |
前提条件 | |
---|---|
この関数を呼び出す前に、 このソケットは SFXSSLSocket::Connect 関数を呼び出して 接続を確立している必要があります 。 また、既に Write がスケジュールされている場合は、SFERR_INVALID_STATE エラーが返ります。 |
SFXSSLSocket::Write | SFBSocket::Writeable | SFXStorage::CallbackSPP | BREW API ISOCKET_Writeable
以下の 4 種類の何れかの SSL 認証モードを指定します。
この関数は、SSL 認証モードを設定します。
設定された値は SFXSSLSocket::Close されるまで有効です。
この値を変更した直後に SFXSSLSocket::Connect 関数を呼び出したときに、 機種によっては SSL_RESULT_SERV_VERS エラーが発生することがあります。
SSL_RESULT_SERV_VERS エラーが発生した場合は、一旦 SFXSSLSocket::Close 関数を呼び出してこの SSL ソケットを閉じて、 再度この関数を呼び出して SSL 認証モードを設定し、SFXSSLSocket::Connect 関数を呼び出してサーバーに接続してください。
設定可能な SSL 認証モードは、 以下の 4 種類です(参照: BREW API ISSL_NegotiateV)。
[ public, virtual ] SFCError Write( VoidConstPtr buffer // データを書き込むバッファ UInt32Ptr size // 呼び出す前: データを書き込むバッファのサイズ。戻り値: 実際に書き込んだデータのサイズ );
データを書き込むバッファを指定します。
この関数を呼び出す時は、データを書き込むバッファのサイズを指定します。 この関数が戻ると、実際にバッファに書き込んだデータのサイズが格納されています。
この関数は、Write(ストリームを使用しないソケットへのデータ送信)を行います。
※ この関数が AEE_NET_WOULDBLOCK を返す場合、 SFXSSLSocket::ScheduleWrite 関数でコールバック関数を登録し、 コールバック関数の中で再度この関数を呼び出して Write を行う必要があります。
注意 | |
---|---|
この関数は、 内部で SFBSocket::Write 関数を呼び出します。 |
前提条件 | |
---|---|
この関数を呼び出す前に、 このソケットは SFXSSLSocket::Connect 関数を呼び出して 接続を確立している必要があります 。 |
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |