目次 - SDL_net 3.0 - NET_CreateServer

NET_CreateServer

接続をacceptするためにlistenするサーバを生成する

ヘッダ

SDL3_net/SDL_net.h

構文

NET_Server * NET_CreateServer(NET_Address *addr, Uint16 port, SDL_PropertiesID props);

引数

NET_Address *addr接続をlistenするローカルアドレス. NULLも可
Uint16port接続をlistenするローカルアドレスのポート
SDL_PropertiesIDprops新しいサーバのプロパティ. デフォルトのとき0

戻り値

(NET_Server *) 新しいNET_Serverを戻す. エラーのときNULLを戻す. SDL_GetError()を呼んで詳細を知ることができる.

詳細

リモートシステムに接続する準備を行った側を「クライアント」と呼び, 接続先を「サーバ」と呼ぶ.

サーバはlistenし, クライアントからの接続をacceptする. それによりサーバ側に新しいストリームパケットが生成され, データの送受信が可能になる.

この関数は別のシステムから接続をacceptするサーバを生成する.

システムは即座にサーバを生成できるか否かを判別できるため, この関数はブロックせず, また非同期処理も行わない. この関数が成功を戻した場合, すぐに接続を待つことができる.

接続をlistenするアドレスを指定することができる. このアドレスはシステムのローカルアドレスである必要があり, 恐らくNET_GetLocalAddresses()が戻したアドレスの1つだが, ほとんどの場合はアプリケーションが有効なアドレスでlistenするために単にNULLを指定すればよい.

サーバを生成した後は, NET_AcceptClient()で接続に来たクライアントと交信するためのストリームソケットを得ることができる.

ストリームソケットは(TCPより上の)特定のプロトコルを使用していないため, SDL_netを使用していないサーバにも接続できるが, HTTPのような任意のバイトストリーム以上のプロトコルで対話したい場合はストリームソケットの上に自分自身で実装しなければならない.

BSDソケットやWinSockとは異なり, ポートは通常の整数で指定する. ライブラリがアプリケーションの代わりに処理するため, バイト交換で「ネットワーク順」にする必要はない.

呼び出し側はプロパティで動作をカスタマイズできる. これは任意で, propsを0にすると全てのプロパティをデフォルトにできる.

これらのプロパティに対応している:

スレッドセーフ

この関数はどのスレッドからも安全に呼べる.

バージョン

SDL_net 3.0.0以降

関連項目

SDL Wikiへのリンク

SDL3_net/NET_CreateServer