目次 - SDL_net 3.0 - NET_AcceptClient

NET_AcceptClient

次の保留中のクライアント接続のストリームソケットを生成する

ヘッダ

SDL3_net/SDL_net.h

構文

bool NET_AcceptClient(NET_Server *server, NET_StreamSocket **client_stream);

引数

NET_Server *server保留中の接続をチェックするサーバオブジェクト
NET_StreamSocket **client_stream保留中の接続がある場合, 新しいソケットが代入される. それ以外のときNULLが代入される

戻り値

(bool) 成功のとき真(保留中の接続がない場合も), エラーのとき偽を戻す. SDL_GetError()を呼んで詳細を知ることができる.

詳細

クライアントがサーバに接続すると, その接続はサーバがacceptするまでは保留となる. acceptされると, サーバにはクライアントとの通信のためのストリームソケットが与えられ, 双方がデータの送信と受信を行えるようになる.

NET_CreateClientとは異なり, サーバのacceptは接続の最終段階であるため, この関数が戻したストリームソケットは既に接続されており, 接続の完了を待つ必要はない.

この関数はブロックしない. 保留中の新しい接続がない場合, この関数は真を戻す(成功するが*client_streamにはNULLが代入される. これはエラーではなく, アプリケーションにとって通常の状態である. 実際には, この関数はこの状態になるまで呼び出してループし, 全ての保留中の接続を1回のバッチでacceptするべきである).

新しい接続があるまでサーバを待たせたい場合は, NET_WaitUntilInputAvailable()を使用すること.

新しくacceptしたクライアントとのやり取りが終わったならば, NET_DestroyStreamSocket()でストリームソケットを切断し破棄すること.

スレッドセーフ

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

バージョン

SDL_net 3.0.0以降

関連項目

SDL Wikiへのリンク

SDL3_net/NET_AcceptClient