bool NET_WriteToStreamSocket(NET_StreamSocket *sock, const void *buf, int buflen);
| NET_StreamSocket * | sock | データを通して送信するストリームソケット |
| const void * | buf | 送信するデータへのポインタ |
| int | buflen | 送信するデータのバイト数 |
ストリームソケットは, データは送信した順序で到着し, 到着を保証するために必要ならばシステムが再送するため, 信頼性が高い. つまり, 致命的な問題がなければデータは大幅な遅れが生じることがあっても到着する. しかし「致命的な問題」は珍しいことではない.
(これはデータグラムソケットとは対照的で, こちらはデータのチャンクが不定な順序で届く場合や全く届かない場合があるが, 失われたチャンクが現れるまで待つことは決してない.)
ストリームソケットは双方向である. 読み込みと書き込みを同じストリームで行い, もう一方の接続先も同じことができる.
この呼び出しは決してブロックしない. すぐにデータを送れない場合でも, ライブラリは後で送信するためにキューに入れる. NET_GetStreamSocketPendingWrites()を使用すると後の送信のためにどのくらいキューにあるかを知ることができ, NET_WaitUntilStreamSocketDrained()を使用すると保留中の全てのデータを送信するまでブロックする.
接続に失敗すると(リモート側の切断や, 様々な種類のネットワーク障害の発生により), この関数は偽を戻して失敗を報告する. ストリームソケットが失敗を報告するのは回復不能な場合のみであるため, 一度ソケットが失敗すると使用することはできないとみなし, NET_DestroyStreamSocket()で破棄する必要がある.
同じソケットを複数のスレッドから同期を行わずに使用してはならない. しかし, 異なるスレッドから別々のソケットに同時にアクセスすることは問題ない.