前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFXInetAddress
IP アドレスやドメイン名を管理するためのクラスです。
#include <SFXInetAddress.h.hpp>
class SFXInetAddress;
SFMTYPEDEFCLASS(SFXInetAddress)

継承図

SFXInetAddress クラスの継承図

協調図

SFXInetAddress クラスの協調図

解説

SFXInetAddress クラスは、IP アドレスやドメイン名を管理したり、 ドメイン名を IP アドレスに変換する Resolve 機能を提供します。

[Tip] Tip
IP アドレスやドメイン名以外にポート番号も管理する場合は、 SFXSocketAddress クラスを利用します。

使用方法

  1. SFXInetAddress::SFXInetAddress コンストラクタ、 またはSFXInetAddress::Set 関数でドメイン名を設定します。
  2. SFXInetAddress::Resolve 関数でドメイン名の解決を行います。 この関数の引数には、ドメイン名解決の結果が通知されるコールバック関数を指定します。
  3. SFXInetAddress::Cancel 関数を呼び出すことにより、 ドメイン名の解決をキャンセルすることも可能です。
  4. ドメイン名の解決が終了すると、2. で登録したコールバック関数が呼び出されます。
  5. コールバック関数内でドメイン名の解決後の処理を行います。
[Note] 注意

SFXInetAddress::SFXInetAddress コンストラクタ、 またはSFXInetAddress::Set 関数で IP アドレスを指定する場合は、 SFXInetAddress::Resolve 関数によるドメイン名の解決は不要です。

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

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

Void MyClass::Function(Void)
{
    SFCError error;
    
    // ドメイン名を設定する
    if ((error = _address.Set("http://www.example.com/test")) == SFERR_NO_ERROR) {

        // ドメイン名を解決する ( ドメイン名解決の結果は ResolveCallback 関数に通知される )
        error = _address.Resolve(XALLBACK_INTERNAL(ResolveCallback));
    }
    if (error != SFERR_NO_ERROR) {

        // エラーが発生したとき、ResolveCallback 関数は呼び出されない
        ...
    }
}

// ドメイン名解決の結果が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXINETADDRESS(MyClass, ResolveCallback, error)
{
     SInt16 i;

     // デバッグウィンドウにドメイン名を表示する
     TRACE("%s", _address.Get().GetCString());
     
      // IP アドレスの個数分繰り返す
     for(i = 0 ; i < _address.GetCount() ; i++){

         // デバッグウィンドウに IP アドレスを表示する
         TRACE("%s",_address.GetIP(i).GetCString());
     }
}

参照

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

メンバ

コンストラクタ/デストラクタ
SFXInetAddress( Void )
SFXInetAddress クラスのコンストラクタです。
SFXInetAddress( SFXInetAddressConstRef param )
SFXInetAddress クラスのコンストラクタです。
SFXInetAddress( SFXAnsiStringConstRef param )
SFXInetAddress クラスのコンストラクタです。
SFXInetAddress( INAddr inaddr )
SFXInetAddress クラスのコンストラクタです。
~SFXInetAddress( Void )
SFXInetAddress クラスのデストラクタです。
パブリック関数
static
SFXInetAddress
AnyInetAddress( Void )
SFXInetAddress 型の INADDR_ANY を取得します。
INAddr AsINAddr( SInt16 index = 0 )
IP アドレスを取得します。
Void Cancel( Void )
ドメイン名の解決をキャンセルします。
Void Clear( Void )
このオブジェクトの IP アドレスやドメイン名の設定をクリアします。
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 )
IP アドレスやドメイン名を設定します。
SFCError Set( SFXAnsiStringConstRef param )
IP アドレスやドメイン名を設定します。
SFCError Set( INAddr inaddr )
IP アドレスやドメイン名を設定します。
SFXInetAddressRef operator=( SFXInetAddressConstRef param )
SFXInetAddress 型のアドレスを代入します。
CallbackSPP
アドレス解決の結果が通知されるコールバック関数の型です。

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

解説

ドメイン名または IP アドレスがこのコンストラクタの引数に指定された場合は、 内部的に SFXInetAddress::Set 関数を呼び出してこのオブジェクトに IP アドレスやドメイン名を設定します。

そうでない場合は、このコンストラクタは何も行いません。

参照

SFXInetAddress::Set


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

解説

このデストラクタは、 内部的に SFXInetAddress::Cancel 関数を呼び出して ドメイン名の解決をキャンセルします。

参照

SFXInetAddress::Cancel


SFXInetAddress::AnyInetAddress
SFXInetAddress 型の INADDR_ANY を取得します。
[ public, static ]
SFXInetAddress AnyInetAddress(Void);

戻り値

SFXInetAddress 型の INADDR_ANY (AEE_INADDR_ANY: 0.0.0.0)

解説

この関数は、 INADDR_ANY ( BREW API AEE_INADDR_ANY) を SFXInetAddress 型に変換して取得します。

[Note] 注意

BREW では、INADDR_ANY ( BREW API AEE_INADDR_ANY) は、以下のように定義されます。

#define AEE_INADDR_ANY      ((INAddr) 0)

BREW API INAddr 型は、以下のように定義されます。

typedef uint32 INAddr;

参照

SFXInetAddress::LocalInetAddress | SFXInetAddress::LoopbackInetAddress | BREW API AEE_INADDR_ANY | BREW API INAddr


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

解説

この関数は、このオブジェクトに設定された IP アドレスを BREW API INAddr 型で取得します。

このオブジェクトが複数の IP アドレスを保持している場合は、 インデックスを指定して特定の IP アドレスを取得することも可能です。 省略時は、インデックス 0 の IP アドレスが返ります。

このオブジェクトが保持している IP アドレスの総数は、 SFXInetAddress::GetCount 関数で取得できます。

[Note] 注意

SFXInetAddress::SFXInetAddress コンストラクタまたは SFXInetAddress::Set 関数で、 IP アドレスではなく、 ドメイン名をこのオブジェクトに設定している場合は、 この関数を呼び出す前に SFXInetAddress::Resolve 関数によりドメイン名を解決する必要があります。

[Note] 注意

BREW API INAddr 型は、以下のように定義されます。

typedef uint32 INAddr;

参照

SFXInetAddress::GetCount | SFXInetAddress::GetIP | SFXInetAddress::Set | SFXInetAddress::SFXInetAddress | SFXInetAddress::Resolve | BREW API INAddr


SFXInetAddress::Cancel
ドメイン名の解決をキャンセルします。
[ public ]
Void Cancel(Void);

解説

この関数は、ドメイン名の解決をキャンセルします。

具体的には、 SFXInetAddress::Resolve 関数で登録したコールバック関数をキャンセルし、 SFXInetAddress::Resolve 関数が内部的に生成した SFBNetMgr インスタンスを解放します。

[Tip] Tip

この関数は、 SFXInetAddress::Resolve 関数を呼び出した後、 コールバック関数が呼び出される前にドメイン名の解決をキャンセルしたい場合に利用します。

SFXInetAddress::~SFXInetAddress デストラクタや SFXInetAddress::Clear 関数から呼び出されます。

参照

SFXInetAddress::Resolve | SFXInetAddress::~SFXInetAddress | SFXInetAddress::Clear | SFBNetMgr


SFXInetAddress::Clear
このオブジェクトの IP アドレスやドメイン名の設定をクリアします。
[ public ]
Void Clear(Void);

解説

この関数は、SFXInetAddress::Cancel 関数を呼び出して SFXInetAddress::Resolve 関数のドメイン名の解決をキャンセルし、 SFXInetAddress::Set 関数や SFXInetAddress::SFXInetAddress コンストラクタによる、 このオブジェクトの IP アドレスやドメイン名の設定をクリアします。

参照

SFXInetAddress::Set | SFXInetAddress::SFXInetAddress | SFXInetAddress::Cancel | SFXInetAddress::Resolve


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

戻り値

SFXInetAddress 型の空のアドレス

解説

この関数は、SFXInetAddress 型の空のアドレスを取得します。

[Tip] Tip
関数の戻り値として空のアドレスへの参照を返すときに使います。

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

戻り値

SFXAnsiString 型のドメイン名

解説

この関数は、このオブジェクトに設定されているドメイン名を SFXAnsiString 型の文字列として取得します。

[Note] 注意

SFXInetAddress::SFXInetAddress コンストラクタ、 またはSFXInetAddress::Set 関数で BREW API INAddr 型の IP アドレスを設定した場合は、 IP アドレスを "nnn.nnn.nnn.nnn" (nnn: 数字) の書式の SFXAnsiString 文字列に変換し、それをドメイン名として返します。

参照

SFXInetAddress::Set | SFXInetAddress::SFXInetAddress | SFXInetAddress::operator= | SFXInetAddress::GetIP | SFXAnsiString | BREW API INAddr


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

戻り値

IP アドレスの個数

解説

この関数は、このオブジェクトに設定されているドメイン名の IP アドレスの個数を取得します。

[Note] 注意

SFXInetAddress::SFXInetAddress コンストラクタまたは SFXInetAddress::Set 関数で、 IP アドレスではなく、 ドメイン名をこのオブジェクトに設定している場合は、 この関数を呼び出す前に SFXInetAddress::Resolve 関数によりドメイン名を解決する必要があります。

参照

SFXInetAddress::Resolve | SFXInetAddress::AsINAddr | SFXInetAddress::GetIP


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

戻り値

IP アドレス(SFXAnsiString)

解説

この関数は、このオブジェクトに設定された IP アドレスを "nnn.nnn.nnn.nnn"(nnn: 数字) の書式の SFXAnsiString 文字列で取得します。 として取得します。

このオブジェクトが複数の IP アドレスを保持している場合は、 インデックスを指定して取得することが可能です。

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

[Note] 注意

SFXInetAddress::SFXInetAddress コンストラクタまたは SFXInetAddress::Set 関数で、 IP アドレスではなく、 ドメイン名をこのオブジェクトに設定している場合は、 この関数を呼び出す前に SFXInetAddress::Resolve 関数によりドメイン名を解決する必要があります。

参照

SFXInetAddress::GetCount | SFXInetAddress::AsINAddr | SFXInetAddress::SFXInetAddress | SFXInetAddress::Set | SFXInetAddress::Resolve | SFXAnsiString


SFXInetAddress::LocalInetAddress
ローカルホストまたはデバイスの IP アドレスを取得します。
[ public, static ]
SFXInetAddress LocalInetAddress(Void);

戻り値

SFXInetAddress 型のローカルホストまたはデバイスの IP アドレス

解説

この関数は、SFXInetAddress 型のローカルホストまたはデバイスの IP アドレスを取得します。

[Note] 注意

この関数は、 内部で SFBNetMgr::GetMyIPAddr 関数を呼び出します。

参照

SFXInetAddress::AnyInetAddress | SFXInetAddress::LoopbackInetAddress | SFBNetMgr::GetMyIPAddr | BREW API INETMGR_GetMyIPAddr


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

戻り値

SFXInetAddress 型のループバックアドレス(AEE_BREW_LOOPBACK: 127.0.0.69)

解説

この関数は、 BREW のループバックアドレス( BREW API AEE_BREW_LOOPBACK)を SFXInetAddress 型に変換して取得します。

[Note] 注意

BREW API AEE_BREW_LOOPBACKは、以下のように定義されます。

#define AEE_BREW_LOOPBACK   (0x7f000045L)
[Tip] Tip
この関数は BREW 2.1 以降有効です。

参照

SFXInetAddress::AnyInetAddress | SFXInetAddress::LocalInetAddress | BREW API AEE_BREW_LOOPBACK


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

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • ドメイン名の解決中にこの関数を呼び出したとき: SFERR_INVALID_STATE
  • ドメイン名が設定されていないとき: SFERR_INVALID_STATE
  • SFBNetMgr インスタンスの生成に失敗したとき: SFERR_FAILED

解説

この関数は、 SFXInetAddress::SFXInetAddress コンストラクタや SFXInetAddress::Set 関数で設定したアドレスに含まれるドメイン名を解決します。

Resolve(ドメイン名が解決)した IP アドレスは、 SFXInetAddress::GetIP / SFXInetAddress::AsINAddr 関数を使用して取得できます。

Resolve の結果、複数の IP アドレスに変換される場合もあります。 この場合は、SFXInetAddress::GetIP / SFXInetAddress::AsINAddr 関数の引数にインデックスを指定することにより、すべての IP アドレスを取得できます。 IP アドレスの総数は、SFXInetAddress::GetCount 関数で取得できます。

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

コールバック関数が呼び出されるまでに、 SFXInetAddress::Cancel 関数を呼び出すことでドメイン名の解決をキャンセルできます。

[Note] コールバック関数の第 1 引数

この関数は、内部で BREW API INETMGR_GetHostByName 関数を呼び出します。 BREW API INETMGR_GetHostByName 関数の下記の戻り値(エラー)は、 コールバック関数の第 1 引数に渡されます。

  • AEE_NET_BADDOMAIN: ホスト名の形式が正しくない (有効なホスト名でない)。
  • AEE_NET_UNKDOMAIN: 不明なホスト、または IP アドレスが与えられていないホスト。
  • AEE_NET_ETIMEDOUT: 最大の時間制限内で応答が得られなかった。
  • EUNSUPPORTED: 正常に機能するために DNS サーバーがデバイス上で設定されている必要がない。 そうでない場合は、EUNSUPPORTED が返される。
  • AEE_NET_GENERAL_FAILURE: 割り当てに失敗した場合。
  • AEE_NET_EOPNOTSUPP: DNS 検索がサポートされていない。
[Note] 注意

IP アドレスが設定されている場合、または ドメイン名が "nnn.nnn.nnn.nnn" (nnn: 数字) の形式で設定されている場合は、 SFXInetAddress::Resolve 関数を呼び出してドメイン名を解決する必要はありません。

SophiaFramework UNIVERSE を使用してソケット通信を行う場合、 SFXSocketAddress 型のアドレス(ドメイン名とポート番号)を渡せばドメイン名は自動的に解決されるので、 SFXInetAddress::Resolve 関数を呼び出してドメイン名を解決する必要はありません。

使用例

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

Void MyClass::Function(Void)
{
    SFCError error;
    
    // ドメイン名を設定する
    if ((error = _address.Set("http://www.example.com/test")) == SFERR_NO_ERROR) {

        // ドメイン名を解決する ( ドメイン名解決の結果は ResolveCallback 関数に通知される )
        error = _address.Resolve(XALLBACK_INTERNAL(ResolveCallback));
    }
    if (error != SFERR_NO_ERROR) {

        // エラーが発生したとき、ResolveCallback 関数は呼び出されない
        ...
    }
}

// ドメイン名解決の結果が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXINETADDRESS(MyClass, ResolveCallback, error)
{
     SInt16 i;

     // デバッグウィンドウにドメイン名を表示する
     TRACE("%s", _address.Get().GetCString());
     
      // IP アドレスの個数分繰り返す
     for(i = 0 ; i < _address.GetCount() ; i++){

         // デバッグウィンドウに IP アドレスを表示する
         TRACE("%s",_address.GetIP(i).GetCString());
     }
}

参照

SFXInetAddress::Set | SFXInetAddress::SFXInetAddress | SFXInetAddress::operator= | SFXInetAddress::GetIP | SFXInetAddress::AsINAddr | SFXInetAddress::Cancel | SFXInetAddress::CallbackSPP | SFBNetMgr | BREW API INETMGR_GetHostByName


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

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、このオブジェクトに引数に指定されたドメイン名または IP アドレスを設定します。

設定したドメイン名または IP アドレスは、 SFXInetAddress::Get 関数により取得できます。

引数が SFXAnsiString 文字列の場合、 以下の書式の文字列を指定することが可能であり、 この書式の文字列から <ドメイン名> だけを取り出して設定します。

<プロトコル> :// <ドメイン名> : <ポート番号> / <パス>  

または

<アカウント> @ <ドメイン名>

<ドメイン名> が "nnn.nnn.nnn.nnn" (nnn: 数字) の形式である場合、 または 引数が BREW API INAddr 型の IP アドレスの場合、 IP アドレスを取得するために SFXInetAddress::Resolve 関数を呼び出す必要はありません。 この場合、ドメイン名を解決することなく、IP アドレスは SFXInetAddress::AsINAddr / SFXInetAddress::GetIP 関数により取得できます。

[Caution] 注意

この関数は、内部で最初に SFXInetAddress::Cancel 関数を呼び出します。

そのため、Resolve 中(SFXInetAddress::Resolve 関数を呼び出してからコールバック関数に結果が通知されるまで)に この関数を呼び出した場合、Resolve(ドメイン名の解決)はキャンセルされます。

使用例

SFXInetAddress address;
SFXAnsiString  domain;

address.Set("http://www.example.com:80/test");

domain = address.Get(); // ドメイン名("www.example.com")を取得する 
SFXInetAddress address;
INAddr         ipaddress_INAddr;
SFXAnsiString  ipaddress_SFXAnsiString;

address.Set("127.0.0.1/test");

ipaddress_INAddr        = address.AsINAddr(); // IP アドレス("127.0.0.1")を INAddr 型で取得する 
ipaddress_SFXAnsiString = address.GetIP();    // IP アドレス("127.0.0.1") を SFXAnsiString 型で取得する

参照

SFXInetAddress::Get | SFXInetAddress::operator= | SFXInetAddress::Clear | SFXInetAddress::Cancel | SFXInetAddress::SFXInetAddress | SFXInetAddress::GetIP | SFXInetAddress::AsINAddr | SFXInetAddress::Resolve | SFXAnsiString | BREW API INAddr


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

解説

このオペレーターは、指定された SFXInetAddress 型のアドレスを入します。

参照

SFXInetAddress::Set


SFXInetAddress::CallbackSPP
アドレス解決の結果が通知されるコールバック関数の型です。
typedef Void(* SFXInetAddress::CallbackSPP)(SFCError error, VoidPtr reference)

解説

SFXInetAddress::Resolve 関数のアドレス解決の結果が通知されるコールバック関数の型です。

第 1 引数にエラーコード、 第 2 引数は SFXInetAddress::Resolve 関数で指定したパラメータ ( 通常、SFXInetAddress インスタンス )が渡されます。

参照

SFXInetAddress::Resolve