目次 - SDL_net 3.0 - NET_CreateClient

NET_CreateClient

クライアントとしてリモートサーバにソケット接続を開始する

ヘッダ

SDL3_net/SDL_net.h

構文

NET_StreamSocket * NET_CreateClient(NET_Address *address, Uint16 port, SDL_PropertiesID props);

引数

NET_Address *address接続先のリモートサーバのアドレス
Uint16port接続先のリモートサーバのポート
SDL_PropertiesIDprops新しいクライアントのプロパティ. デフォルトのとき0

戻り値

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

詳細

それぞれのNET_StreamSocketはシステム間の1つの接続を表す. 通常, クライアントアプリケーションは異なるコンピュータのサーバアプリケーションへの1つの接続を持ち, サーバアプリケーションは異なるクライアントからの複数の接続を持つ. それぞれの接続は別々のストリームソケットで通信を行う.

接続は非同期な操作であるため, この関数はブロックせず, 接続が完了する前に戻る. 後でNET_WaitUntilConnected()またはNET_GetConnectionStatus()で操作が完了し接続が成功したかを知ることができる.

接続すると戻されたソケットでデータの読み込みと書き込みを行える. ストリームソケットは信頼性の高い通信方式で, データは送信した順序のバイトストリームとして受信される. 通信に問題が発生すると, システムは必要ならばアプリケーションに対して透過的にネゴシエーションと再送信を試みるが, データが送信した順序で利用可能になるまでリモート側はデータを得られない. これはデータグラムソケットとのトレードオフで, データグラムソケットではデータは不定な順序で届いた場合や全く届かなかった場合でも待たされることはないが, 送信側は結果を知ることができない.

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

この関数はアドレスの解決が完了していない場合は失敗する.

この接続を使用し終えたならば, (接続に失敗しても, していなくても)NET_DestroyStreamSocket()で破棄する必要がある.

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

現在はクライアント生成の追加のプロパティは存在しないため, propsは0とすること. 将来的にはSDL_netには(任意の)プロパティが追加される可能性がある.

スレッドセーフ

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

バージョン

SDL_net 3.0.0以降

関連項目

SDL Wikiへのリンク

SDL3_net/NET_CreateClient