前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework 4.1
SFXInetAddress
IP アドレスとドメインを管理するためのクラスです。
#include <SFXInetAddress.h.hpp>
class SFXInetAddress;
SFMTYPEDEFCLASS(SFXInetAddress)

継承図

SFXInetAddress クラスの継承図

協調図

SFXInetAddress クラスの協調図

解説

ドメインを IP アドレスに変換する Resolve 機能も持ちます。ポート番号を管理する場合は SFXSocketAddress クラスを使います。

使用方法

  1. コンストラクタ、または、SFXInetAddress::Set 関数でドメインを設定します。
  2. SFXInetAddress::Resolve 関数でドメインの解決を行います。引数でコールバック関数を登録します。
  3. ドメインの解決が終了すると、登録したコールバック関数が呼び出されます。
  4. コールバック関数内で処理を行います。

例 480. ドメインを解決する方法

class MyClass {
    SFXInetAddress _address;
    Void Function(Void);
    CALLBACK_DECLARE_SFXINETADDRESS(ResolveCallback)
};

Void MyClass::Function(Void)
{
    SFCError error;
    
    // ドメインを設定する
    if ((error = _address.Set("http://www.example.com/test")) == SFERR_NO_ERROR) {
        // ドメインを解決する ( 解決完了はコールバックで通知される )
        error = _address.Resolve(CALLBACK_FUNCTION(ResolveCallback));
    }
    if (error != SFERR_NO_ERROR) {
        // コールバックが返らないので、ここでエラー処理をする
    }
}

// コールバック関数の実装
CALLBACK_IMPLEMENT_SFXINETADDRESS(MyClass, ResolveCallback, error)
{
     SInt16 i;

     // 結果の取得
     TRACE("%s",_address.Get().GetCString());  // ドメイン
     
      // IP アドレスの個数を繰り返す
     for(i = 0 ; i < _address.GetCount() ; i++){
         // 結果の取得
         TRACE("%s",_address.GetIP(i).GetCString());  // IP アドレス
     }
}

参照

SFXSocketAddress | IP アドレス・ドメイン・ポート番号

メンバ

コンストラクタ/デストラクタ
SFXInetAddress( Void )
SFXInetAddress( SFXInetAddressConstRef param )
SFXInetAddress( SFXAnsiStringConstRef param )
SFXInetAddress( INAddr inaddr )
SFXInetAddress クラスのコンストラクタです。
~SFXInetAddress( Void )
SFXInetAddress クラスのデストラクタです。
パブリック関数
static
SFXInetAddress
AnyInetAddress( Void )
SFXInetAddress 形式の Any アドレスに変換します。
INAddr AsINAddr( SInt16 index = 0 )
IP アドレスを INAddr 形式に変換します。
Void Cancel( Void )
IP アドレスの解決をキャンセルします。
Void Clear( Void )
ドメイン名を空にします。
static
SFXInetAddressConstRef
EmptyInstance( Void )
空のアドレスを取得します。
SFXAnsiStringConstRef Get( Void )
ドメインを取得します。
SInt16 GetCount( Void )
IP アドレスの個数を取得します。
SFXAnsiString GetIP( SInt16 index = 0 )
IP アドレスを取得します。
static
SFXInetAddress
LocalInetAddress( Void )
自身の IP アドレスを返します。
static
SFXInetAddress
LoopbackInetAddress( Void )
ループバック アドレスを返します。
SFCError Resolve( CallbackSPP spp , VoidPtr reference )
ドメイン名を解決します。
SFCError Set( SFXInetAddressConstRef param )
Set( INAddr inaddr )
Set( SFXAnsiStringConstRef param )
IP アドレスやドメインを設定します。
SFXInetAddressRef operator=( SFXInetAddressConstRef param )
ドメインや IP アドレスを代入します。
CallbackSPP
コールバック関数のプロトタイプです。

SFXInetAddress::SFXInetAddress
SFXInetAddress クラスのコンストラクタです。
[ public, explicit ]
SFXInetAddress(Void);
[ public ]
SFXInetAddress(
    SFXInetAddressConstRef param   // 元になる SFXInetAddress
);
[ public, explicit ]
SFXInetAddress(
    SFXAnsiStringConstRef param   // ドメイン文字列
);
[ public, explicit ]
SFXInetAddress(
    INAddr inaddr   // IP アドレス
);

解説

引数が SFXAnsiString の場合、ドメイン文字列としては以下の書式に対応しています。

<protocol> :// <account>  @ <domain>  : <port>  / <path>  

この文字列 (一部欠けていても可) が与えられると、<domain> の部分だけを取り出して設定します。

<domain> の部分が IP アドレス ("nnn.nnn.nnn.nnn" という文字列) の場合、自動的に SFXInetAddress::AsINAddr 関数で取得できます。

参照

SFXInetAddress::Set | SFXInetAddress::operator=


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

SFXInetAddress::AnyInetAddress
SFXInetAddress 形式の Any アドレスに変換します。
[ public, static ]
SFXInetAddress AnyInetAddress(Void);

戻り値

SFXInetAddress 形式の Any アドレス( AEE_INADDR_ANY )を返します。

参照

SFXInetAddress::LocalInetAddress | SFXInetAddress::LoopbackInetAddress


SFXInetAddress::AsINAddr
IP アドレスを INAddr 形式に変換します。
[ public, const ]
INAddr AsINAddr(
    SInt16 index = 0   // インデックス
);

解説

SFXInetAddress::Resolve 関数で解決した IP アドレスを INAddr 形式で取得します。

SFXInetAddress クラスは IP アドレスを複数保持しているので、何番目の IP アドレスを取得するかをインデックスで指定します。

保持している IP アドレスの数は SFXInetAddress::GetCount 関数で取得します。

参照

SFXInetAddress::GetCount | SFXInetAddress::GetIP | SFXInetAddress::Resolve


SFXInetAddress::Cancel
IP アドレスの解決をキャンセルします。
[ public ]
Void Cancel(Void);

解説

SFXInetAddress::Resolve 関数の呼び出し後、コールバック関数が呼び出される前にキャンセルする場合に使います。

SFXInetAddress::Resolve 関数で使っている SFBNetMgr クラスのインスタンスを解放します。

参照

SFXInetAddress::Resolve


SFXInetAddress::Clear
ドメイン名を空にします。
[ public ]
Void Clear(Void);

参照

SFXInetAddress::Cancel


SFXInetAddress::EmptyInstance
空のアドレスを取得します。
[ public, static ]
SFXInetAddressConstRef EmptyInstance(Void);

戻り値

SFXInetAddress 型の空のアドレスを返します。


SFXInetAddress::Get
ドメインを取得します。
[ public, const ]
SFXAnsiStringConstRef Get(Void);

SFXInetAddress::GetCount
IP アドレスの個数を取得します。
[ public, const ]
SInt16 GetCount(Void);

参照

SFXInetAddress::AsINAddr | SFXInetAddress::GetIP


SFXInetAddress::GetIP
IP アドレスを取得します。
[ public, const ]
SFXAnsiString GetIP(
    SInt16 index = 0   // インデックス
);

解説

SFXInetAddress::Resolve 関数で解決した IP アドレスを文字列 (書式は "nnn.nnn.nnn.nnn") として取得します。

SFXInetAddress クラスは IP アドレスを複数保持しているので、何番目の IP アドレスを取得するかをインデックスで指定します。

保持している IP アドレスの数は SFXInetAddress::GetCount 関数で取得します。

参照

SFXInetAddress::GetCount | SFXInetAddress::AsINAddr


SFXInetAddress::LocalInetAddress
自身の IP アドレスを返します。
[ public, static ]
SFXInetAddress LocalInetAddress(Void);

戻り値

SFXInetAddress 型の自身の IP アドレスを返します。

解説

内部で SFBNetMgr::GetMyIPAddr を呼び出します。

参照

SFXInetAddress::AnyInetAddress SFXInetAddress::LoopbackInetAddress


SFXInetAddress::LoopbackInetAddress
ループバック アドレスを返します。
[ public, static ]
SFXInetAddress LoopbackInetAddress(Void);

戻り値

SFXInetAddress 型のループバック アドレス( AEE_BREW_LOOPBACK )を返します。

解説

SFXInetAddress::LoopbackInetAddress 関数は BREW 2.1 以降有効です。

参照

SFXInetAddress::AnyInetAddress SFXInetAddress::LocalInetAddress


SFXInetAddress::Resolve
ドメイン名を解決します。
[ public ]
SFCError Resolve(
    CallbackSPP spp     // コールバック関数
    VoidPtr reference   // コールバック関数へ渡されるデータ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • IP アドレスの解決中にもう一度 SFXInetAddress::Resolve 関数を呼び出したとき : SFERR_INVALID_STATE
  • ドメイン名がないとき : SFERR_INVALID_STATE
  • SFBNetMgr クラスのインスタンス生成に失敗したとき : SFERR_FAILED

解説

ドメイン名の解決が完了すると、引数で指定したコールバック関数が呼び出されます。SFXInetAddress::Resolve 関数がエラーの場合はコールバック関数は呼び出されません。

使用例

class MyClass {
    SFXInetAddress _address;
    Void Function(Void);
    CALLBACK_DECLARE_SFXINETADDRESS(ResolveCallback);
};

Void MyClass::Function(Void)
{
    SFCError error;
    _address.Set("http://www.example.com/test");
    error = _address.Resolve(CALLBACK_FUNCTION(ResolveCallback));
    // エラー値をチェックする必要がある
}

// コールバック関数
CALLBACK_IMPLEMENT_SFXINETADDRESS(MyClass, ResolveCallback, error)
{
    SFXAnsiString ip;
    ip = _address.GetIP(0); // 結果の取得
}

参照

SFXInetAddress::Cancel | SFXInetAddress::CallbackSPP


SFXInetAddress::Set
IP アドレスやドメインを設定します。
[ public ]
SFCError Set(
    SFXInetAddressConstRef param   // 元になる SFXInetAddress
);
[ public ]
SFCError Set(
    SFXAnsiStringConstRef param   // ドメイン文字列
);
[ public ]
SFCError Set(
    INAddr inaddr   // IP アドレス
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • IP アドレスがないとき : SFERR_INVALID_PARAM
  • IP アドレスを INAddr 形式に変換できないとき : SFERR_FAILED
  • メモリ不足のとき : SFERR_NO_MEMORY

解説

ドメイン文字列は以下の書式に対応しています。

<protocol> :// <account>  @ <domain>  : <port> / <path>  

このような文字列 (一部欠けていても可) が与えられると、<domain> の部分だけを取り出して設定します。

<domain> の部分が IP アドレス ("nnn.nnn.nnn.nnn" という文字列) の場合、自動的に SFXInetAddress::AsINAddr 関数で取得できます。

Resolve 中に SFXInetAddress::Set 関数を呼び出した場合はキャンセルされます。

使用例

SFXInetAddress address;
address.Set("http://www.example.com:80/test");
address.Get(); // "www.example.com" 
SFXInetAddress address;
address.Set("127.0.0.1/test");
address.AsINAddr(); // 127.0.0.1 を INAddr 形式で返す

参照

SFXInetAddress::operator= | SFXInetAddress::AsINAddr | SFXInetAddress::Resolve


SFXInetAddress::operator=
ドメインや IP アドレスを代入します。
[ public ]
SFXInetAddressRef operator=(
    SFXInetAddressConstRef param   // 元になる SFXInetAddress
);

解説

SFXAnsiString 文字列を代入する場合、特定の書式を認識します。

ドメイン文字列は以下の書式に対応しています。

<protocol> :// <account>  @ <domain>  : <port>  / <path>  

この文字列 (一部欠けていても可) が与えられると、<domain> の部分だけを取り出して設定します。

<domain> の部分が IP アドレス ("nnn.nnn.nnn.nnn" という文字列) の場合、自動的に SFXInetAddress::AsINAddr 関数で取得できます。

参照

SFXInetAddress::Set


SFXInetAddress::CallbackSPP
コールバック関数のプロトタイプです。
typedef Void(* SFXInetAddress::CallbackSPP)(SFCError error, VoidPtr reference)

解説

SFXInetAddress クラスで使うコールバック関数です。 通信処理の結果はコールバック関数に通知されます。

第 1 引数にエラーコード、第 2 引数に登録したパラメーターが渡されます。

参照

SFXInetAddress::Resolve