SophiaFramework UNIVERSE 5.3 |
SFXInetAddress クラスは、IP アドレスやドメイン名を管理したり、 ドメイン名を IP アドレスに変換する Resolve 機能を提供します。
Tip | |
---|---|
IP アドレスやドメイン名以外にポート番号も管理する場合は、 SFXSocketAddress クラスを利用します。 |
使用方法
注意 | |
---|---|
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()); } }
コンストラクタ/デストラクタ |
---|
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 アドレス解決の結果が通知されるコールバック関数の型です。
|
[ public, explicit ] SFXInetAddress(Void);
[ public ] SFXInetAddress( SFXInetAddressConstRef param // 元になる SFXInetAddress );
[ public, explicit ] SFXInetAddress( SFXAnsiStringConstRef param // ドメイン名 );
[ public, explicit ] SFXInetAddress( INAddr inaddr // IP アドレス );
ドメイン名または IP アドレスがこのコンストラクタの引数に指定された場合は、 内部的に SFXInetAddress::Set 関数を呼び出してこのオブジェクトに IP アドレスやドメイン名を設定します。
そうでない場合は、このコンストラクタは何も行いません。
[ public ] ~SFXInetAddress(Void);
このデストラクタは、 内部的に SFXInetAddress::Cancel 関数を呼び出して ドメイン名の解決をキャンセルします。
[ public, static ] SFXInetAddress AnyInetAddress(Void);
SFXInetAddress 型の INADDR_ANY (AEE_INADDR_ANY: 0.0.0.0)
この関数は、 INADDR_ANY ( BREW API AEE_INADDR_ANY) を SFXInetAddress 型に変換して取得します。
注意 | |
---|---|
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
この関数は、このオブジェクトに設定された IP アドレスを BREW API INAddr 型で取得します。
このオブジェクトが複数の IP アドレスを保持している場合は、 インデックスを指定して特定の IP アドレスを取得することも可能です。 省略時は、インデックス 0 の IP アドレスが返ります。
このオブジェクトが保持している IP アドレスの総数は、 SFXInetAddress::GetCount 関数で取得できます。
注意 | |
---|---|
SFXInetAddress::SFXInetAddress コンストラクタまたは SFXInetAddress::Set 関数で、 IP アドレスではなく、 ドメイン名をこのオブジェクトに設定している場合は、 この関数を呼び出す前に SFXInetAddress::Resolve 関数によりドメイン名を解決する必要があります。 |
注意 | |
---|---|
BREW API INAddr 型は、以下のように定義されます。 typedef uint32 INAddr; |
SFXInetAddress::GetCount | SFXInetAddress::GetIP | SFXInetAddress::Set | SFXInetAddress::SFXInetAddress | SFXInetAddress::Resolve | BREW API INAddr
[ public ] Void Cancel(Void);
この関数は、ドメイン名の解決をキャンセルします。
具体的には、 SFXInetAddress::Resolve 関数で登録したコールバック関数をキャンセルし、 SFXInetAddress::Resolve 関数が内部的に生成した SFBNetMgr インスタンスを解放します。
Tip | |
---|---|
この関数は、 SFXInetAddress::Resolve 関数を呼び出した後、 コールバック関数が呼び出される前にドメイン名の解決をキャンセルしたい場合に利用します。 SFXInetAddress::~SFXInetAddress デストラクタや SFXInetAddress::Clear 関数から呼び出されます。 |
[ public ] Void Clear(Void);
この関数は、SFXInetAddress::Cancel 関数を呼び出して SFXInetAddress::Resolve 関数のドメイン名の解決をキャンセルし、 SFXInetAddress::Set 関数や SFXInetAddress::SFXInetAddress コンストラクタによる、 このオブジェクトの IP アドレスやドメイン名の設定をクリアします。
SFXInetAddress::Set | SFXInetAddress::SFXInetAddress | SFXInetAddress::Cancel | SFXInetAddress::Resolve
[ public, static ] SFXInetAddressConstRef EmptyInstance(Void);
SFXInetAddress 型の空のアドレス
[ public, const ] SFXAnsiStringConstRef Get(Void);
SFXAnsiString 型のドメイン名
この関数は、このオブジェクトに設定されているドメイン名を SFXAnsiString 型の文字列として取得します。
注意 | |
---|---|
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
[ public, const ] SInt16 GetCount(Void);
IP アドレスの個数
この関数は、このオブジェクトに設定されているドメイン名の IP アドレスの個数を取得します。
注意 | |
---|---|
SFXInetAddress::SFXInetAddress コンストラクタまたは SFXInetAddress::Set 関数で、 IP アドレスではなく、 ドメイン名をこのオブジェクトに設定している場合は、 この関数を呼び出す前に SFXInetAddress::Resolve 関数によりドメイン名を解決する必要があります。 |
[ public, const ] SFXAnsiString GetIP( SInt16 index = 0 // インデックス );
IP アドレス(SFXAnsiString)
この関数は、このオブジェクトに設定された IP アドレスを "nnn.nnn.nnn.nnn"(nnn: 数字) の書式の SFXAnsiString 文字列で取得します。 として取得します。
このオブジェクトが複数の IP アドレスを保持している場合は、 インデックスを指定して取得することが可能です。
保持している IP アドレスの総数は、 SFXInetAddress::GetCount 関数で取得できます。
注意 | |
---|---|
SFXInetAddress::SFXInetAddress コンストラクタまたは SFXInetAddress::Set 関数で、 IP アドレスではなく、 ドメイン名をこのオブジェクトに設定している場合は、 この関数を呼び出す前に SFXInetAddress::Resolve 関数によりドメイン名を解決する必要があります。 |
SFXInetAddress::GetCount | SFXInetAddress::AsINAddr | SFXInetAddress::SFXInetAddress | SFXInetAddress::Set | SFXInetAddress::Resolve | SFXAnsiString
[ public, static ] SFXInetAddress LocalInetAddress(Void);
SFXInetAddress 型のローカルホストまたはデバイスの IP アドレス
この関数は、SFXInetAddress 型のローカルホストまたはデバイスの IP アドレスを取得します。
注意 | |
---|---|
この関数は、 内部で SFBNetMgr::GetMyIPAddr 関数を呼び出します。 |
SFXInetAddress::AnyInetAddress | SFXInetAddress::LoopbackInetAddress | SFBNetMgr::GetMyIPAddr | BREW API INETMGR_GetMyIPAddr
[ public, static ] SFXInetAddress LoopbackInetAddress(Void);
SFXInetAddress 型のループバックアドレス(AEE_BREW_LOOPBACK: 127.0.0.69)
この関数は、 BREW のループバックアドレス( BREW API AEE_BREW_LOOPBACK)を SFXInetAddress 型に変換して取得します。
注意 | |
---|---|
BREW API AEE_BREW_LOOPBACKは、以下のように定義されます。 #define AEE_BREW_LOOPBACK (0x7f000045L) |
Tip | |
---|---|
この関数は BREW 2.1 以降有効です。 |
この関数は、 SFXInetAddress::SFXInetAddress コンストラクタや SFXInetAddress::Set 関数で設定したアドレスに含まれるドメイン名を解決します。
Resolve(ドメイン名が解決)した IP アドレスは、 SFXInetAddress::GetIP / SFXInetAddress::AsINAddr 関数を使用して取得できます。
Resolve の結果、複数の IP アドレスに変換される場合もあります。 この場合は、SFXInetAddress::GetIP / SFXInetAddress::AsINAddr 関数の引数にインデックスを指定することにより、すべての IP アドレスを取得できます。 IP アドレスの総数は、SFXInetAddress::GetCount 関数で取得できます。
ドメイン名の解決が完了すると、引数で指定したコールバック関数が呼び出されます。 しかし、この関数がエラーの場合は呼び出されません。
コールバック関数が呼び出されるまでに、 SFXInetAddress::Cancel 関数を呼び出すことでドメイン名の解決をキャンセルできます。
コールバック関数の第 1 引数 | |
---|---|
この関数は、内部で BREW API INETMGR_GetHostByName 関数を呼び出します。 BREW API INETMGR_GetHostByName 関数の下記の戻り値(エラー)は、 コールバック関数の第 1 引数に渡されます。
|
注意 | |
---|---|
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
[ public ] SFCError Set( SFXInetAddressConstRef param // 元になる SFXInetAddress );
[ public ] SFCError Set( SFXAnsiStringConstRef param // ドメイン名文字列 );
[ public ] SFCError Set( INAddr inaddr // IP アドレス );
この関数は、このオブジェクトに引数に指定されたドメイン名または IP アドレスを設定します。
設定したドメイン名または IP アドレスは、 SFXInetAddress::Get 関数により取得できます。
引数が SFXAnsiString 文字列の場合、 以下の書式の文字列を指定することが可能であり、 この書式の文字列から <ドメイン名> だけを取り出して設定します。
<プロトコル> :// <ドメイン名> : <ポート番号> / <パス>
または
<アカウント> @ <ドメイン名>
<ドメイン名> が "nnn.nnn.nnn.nnn" (nnn: 数字) の形式である場合、 または 引数が BREW API INAddr 型の IP アドレスの場合、 IP アドレスを取得するために SFXInetAddress::Resolve 関数を呼び出す必要はありません。 この場合、ドメイン名を解決することなく、IP アドレスは SFXInetAddress::AsINAddr / SFXInetAddress::GetIP 関数により取得できます。
注意 | |
---|---|
この関数は、内部で最初に 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
[ public ] SFXInetAddressRef operator=( SFXInetAddressConstRef param // 元になる SFXInetAddress );
このオペレーターは、指定された SFXInetAddress 型のアドレスを入します。
typedef Void(* SFXInetAddress::CallbackSPP)(SFCError error, VoidPtr reference)
SFXInetAddress::Resolve 関数のアドレス解決の結果が通知されるコールバック関数の型です。
第 1 引数にエラーコード、 第 2 引数は SFXInetAddress::Resolve 関数で指定したパラメータ ( 通常、SFXInetAddress インスタンス )が渡されます。
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |