![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0 |


ドメインを IP アドレスに変換する Resolve 機能も持ちます。ポート番号を管理する場合は SFXSocketAddress クラスを使います。
使用方法
例 724. ドメインを解決する方法
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 アドレス
}
}
| コンストラクタ/デストラクタ |
|---|
|
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 コールバック関数のプロトタイプです。
|
[ 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 関数で取得できます。
[ public ] ~SFXInetAddress(Void);
[ public, static ] SFXInetAddress AnyInetAddress(Void);
SFXInetAddress 形式の Any アドレス( AEE_INADDR_ANY )を返します。
SFXInetAddress::Resolve 関数で解決した IP アドレスを INAddr 形式で取得します。
SFXInetAddress クラスは IP アドレスを複数保持しているので、何番目の IP アドレスを取得するかをインデックスで指定します。
保持している IP アドレスの数は SFXInetAddress::GetCount 関数で取得します。
[ public ] Void Cancel(Void);
SFXInetAddress::Resolve 関数の呼び出し後、コールバック関数が呼び出される前にキャンセルする場合に使います。
SFXInetAddress::Resolve 関数で使っている SFBNetMgr クラスのインスタンスを解放します。
[ public ] Void Clear(Void);
[ public, static ] SFXInetAddressConstRef EmptyInstance(Void);
SFXInetAddress 型の空のアドレスを返します。
[ public, const ] SFXAnsiStringConstRef Get(Void);
[ public, const ] SInt16 GetCount(Void);
[ public, const ] SFXAnsiString GetIP( SInt16 index = 0 // インデックス );
SFXInetAddress::Resolve 関数で解決した IP アドレスを文字列 (書式は "nnn.nnn.nnn.nnn") として取得します。
SFXInetAddress クラスは IP アドレスを複数保持しているので、何番目の IP アドレスを取得するかをインデックスで指定します。
保持している IP アドレスの数は SFXInetAddress::GetCount 関数で取得します。
[ public, static ] SFXInetAddress LocalInetAddress(Void);
SFXInetAddress 型の自身の IP アドレスを返します。
内部で SFBNetMgr::GetMyIPAddr を呼び出します。
[ public, static ] SFXInetAddress LoopbackInetAddress(Void);
SFXInetAddress 型のループバック アドレス( AEE_BREW_LOOPBACK )を返します。
SFXInetAddress::LoopbackInetAddress 関数は BREW 2.1 以降有効です。
ドメイン名の解決が完了すると、引数で指定したコールバック関数が呼び出されます。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); // 結果の取得
}
[ public ] SFCError Set( SFXInetAddressConstRef param // 元になる SFXInetAddress );
[ public ] SFCError Set( SFXAnsiStringConstRef param // ドメイン文字列 );
[ public ] SFCError Set( INAddr inaddr // IP アドレス );
ドメイン文字列は以下の書式に対応しています。
<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 形式で返す
[ public ] SFXInetAddressRef operator=( SFXInetAddressConstRef param // 元になる SFXInetAddress );
SFXAnsiString 文字列を代入する場合、特定の書式を認識します。
ドメイン文字列は以下の書式に対応しています。
<protocol> :// <account> @ <domain> : <port> / <path>
この文字列 (一部欠けていても可) が与えられると、<domain> の部分だけを取り出して設定します。
<domain> の部分が IP アドレス ("nnn.nnn.nnn.nnn" という文字列) の場合、自動的に SFXInetAddress::AsINAddr 関数で取得できます。
typedef Void(* SFXInetAddress::CallbackSPP)(SFCError error, VoidPtr reference)
SFXInetAddress クラスで使うコールバック関数です。 通信処理の結果はコールバック関数に通知されます。
第 1 引数にエラーコード、第 2 引数に登録したパラメーターが渡されます。
|
Copyright (C) 2002 - 2008 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]()
|