目次 - SDL_net 3.0 - NET_WaitUntilResolved

NET_WaitUntilResolved

アドレスが解決するまで待つ

ヘッダ

SDL3_net/SDL_net.h

構文

NET_Status NET_WaitUntilResolved(NET_Address *address, Sint32 timeout);

引数

NET_Address *address解決を待つNET_Addressオブジェクト
Sint32timeout解決の完了まで待つ時間(ミリ秒). -1のとき無限に待つ. 0のとき待たずにチェックする

戻り値

(NET_Status) 解決に成功したときNET_SUCCESS, 解決に失敗したときNET_FAILURE, 解決中のときNET_WAITING(解決が完了する前にタイムアウトした)を戻す. NET_FAILUREの場合, SDL_GetError()を呼んで詳細を知ることができる.

詳細

NET_ResolveHostnameが戻したNET_Addressオブジェクトの解決には時間がかかるため, 処理はアプリケーションがどれだけかかるかわからない時間を待つのではなく非同期に行われる.

しかし, アドレスの解決が完了するまでプログラムを待たせたい場合は, この関数を使用することができる.

この関数は解決の完了までどれだけ待つかのミリ秒単位のタイムアウト時間を引数とする. タイムアウト時間に-1を指定すると無限に待ち, 0を指定すると現在の状態をチェックして即座に戻る(これは機能的にはNET_GetAddressStatusと同等である).

時間がかかった後で解決が失敗することもあるため(ホスト名が解決しなかったことをDNSサーバが応答するまで時間がかかった等), 成功したとみなさずに必ず結果をチェックすること.

解決に成功した後は, このアドレスのホストに接続するために使用できる.

プログラムをブロックしたくない場合は, NET_GetAddressStatusを0以外を戻すまで定期的に呼び出すこと.

スレッドセーフ

この関数はどのスレッドからも安全に呼べるが, 複数のスレッドで同一のアドレスに使用すると同時にブロックする場合がある.

バージョン

SDL_net 3.0.0以降

関連項目

SDL Wikiへのリンク

SDL3_net/NET_WaitUntilResolved