目次 - SDL_net 3.0 - NET_WaitUntilStreamSocketDrained

NET_WaitUntilStreamSocketDrained

ストリームソケットの未送信データの送信が完了するまでブロックする

ヘッダ

SDL3_net/SDL_net.h

構文

int NET_WaitUntilStreamSocketDrained(NET_StreamSocket *sock, Sint32 timeout);

引数

NET_StreamSocket *sock送信完了を待つストリームソケット
Sint32timeout接続の完了まで待つ時間(ミリ秒). -1のとき無限に待つ. 0のとき待たずにチェックする

戻り値

(int) 未送信のバイト数を戻す. 失敗のとき-1を戻す. SDL_GetError()を呼んで詳細を知ることができる.

詳細

NET_WriteToStreamSocket()は即座に全てのデータを送れなかったとき, 後で送るためにキューに入れる. アプリケーションはこの関数で全てのデータを送信するまで待つことができる.

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

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

接続に失敗すると(リモート側の切断や, 様々な種類のネットワーク障害の発生により), この関数は-1を戻して失敗を報告する. ストリームソケットが失敗を報告するのは回復不能な場合のみであるため, 一度ソケットが失敗すると使用することはできないとみなし, NET_DestroyStreamSocket()で破棄する必要がある.

スレッドセーフ

同じソケットを複数のスレッドから同期を行わずに使用してはならない. しかし, 異なるスレッドから別々のソケットに同時にアクセスすることは問題ない.

バージョン

SDL_net 3.0.0以降

関連項目

SDL Wikiへのリンク

SDL3_net/NET_WaitUntilStreamSocketDrained