目次 - SDL_net 3.0 - NET_WriteToStreamSocket

NET_WriteToStreamSocket

リモートシステムにストリームソケットでバイトを送信する

ヘッダ

SDL3_net/SDL_net.h

構文

bool NET_WriteToStreamSocket(NET_StreamSocket *sock, const void *buf, int buflen);

引数

NET_StreamSocket *sockデータを通して送信するストリームソケット
const void *buf送信するデータへのポインタ
intbuflen送信するデータのバイト数

戻り値

(bool) データを送信または送信のためにキューに入れたとき真, 失敗のとき偽を戻す. SDL_GetError()を呼んで詳細を知ることができる.

詳細

ストリームソケットは, データは送信した順序で到着し, 到着を保証するために必要ならばシステムが再送するため, 信頼性が高い. つまり, 致命的な問題がなければデータは大幅な遅れが生じることがあっても到着する. しかし「致命的な問題」は珍しいことではない.

(これはデータグラムソケットとは対照的で, こちらはデータのチャンクが不定な順序で届く場合や全く届かない場合があるが, 失われたチャンクが現れるまで待つことは決してない.)

ストリームソケットは双方向である. 読み込みと書き込みを同じストリームで行い, もう一方の接続先も同じことができる.

この呼び出しは決してブロックしない. すぐにデータを送れない場合でも, ライブラリは後で送信するためにキューに入れる. NET_GetStreamSocketPendingWrites()を使用すると後の送信のためにどのくらいキューにあるかを知ることができ, NET_WaitUntilStreamSocketDrained()を使用すると保留中の全てのデータを送信するまでブロックする.

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

スレッドセーフ

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

バージョン

SDL_net 3.0.0以降

関連項目

SDL Wikiへのリンク

SDL3_net/NET_WriteToStreamSocket