SOC_Write
SOC_Send
SOC_SendTo

構文

#include <nitroWiFi/soc.h>
int SOC_Write  ( int s, const void* buf, int len );
int SOC_Send   ( int s, const void* buf, int len, int flags );
int SOC_SendTo ( int s, const void* buf, int len, int flags, const void* sockTo );

引数

s ソケット記述子。
buf 送るメッセージが格納されるバッファへのポインタ。
len 送られるメッセージの長さ(バイト)。メッセージが長すぎて使用しているプロトコルでは通らない場合、SOC_Send()は失敗し、データは伝達されません。
flags メッセージ伝達のタイプ。flags は、0か以下の値の論理ORをとったものです(ストリーム・ソケットのみ)。
SOC_MSG_DONTWAIT 非封鎖処理を実行します。リソースの空きがない場合はSOC_EWOULDBLOCKが返されます。

注意:SOC_MSG_DONTWAIT のみのサポートとなっています。

sockTo 終点アドレスを格納しているソケットアドレス構造体(SOCSockAddr,SOCSockAddrIn)へのポインタ。
データグラム・ソケットなら、SOC_SendTo()sockTo によって指定されたアドレスへメッセージを送ります。ストリーム・ソケットなら、sockTo は無視されます。

返り値

1以上 送信したメッセージのバイト数。 ソケット記述子にSOC_O_NONBLOCKが設定された場合、返り値はlenより小さいことがあります(ショート カウント)。
0 失敗。
SOC_EINVAL ソケット記述子の値が不正です。( s < 0 か存在しないソケット)
SOC_EMSGSIZE 送信するにはlenで指定したサイズが大きすぎます。(sがデータグラム・ソケットの場合)
SOC_ENETRESET ソケットライブラリが初期化されていません。
SOC_ENOTCONN 接続されていません。
SOC_EWOULDBLOCK リソース不足です。(sが非封鎖ソケットか、SOC_MSG_DONTWAITフラグが指定されている場合、送信バッファにメッセージをコピーする空きがありません。)

注意:追加のエラーが今後のライブラリリリースで生じたり返されることがあります。すべての負の返り値は汎用のエラーとして扱ってください。

説明

SOC_Write(), SOC_Send(), SOC_SendTo() は指定されたソケットを通してメッセージを送ります。

SOC_Write()flags を設定しない以外は SOC_Send() と同等です。

SOC_Write(), SOC_Send(), SOC_SendTo()は、非封鎖モードの呼び出しをしない限り、ソケットの送信バッファに空きがなければブロックします。

封鎖モードの呼び出しは、データグラム・ソケット(UDP)の送信でも関数が返るまでに数百msの間ブロックすることがあります。注意して使用して下さい。

参照

SOCSockAddr, SOC_Fcntl

履歴

2008/05/13 返り値の修正、説明の修正
2006/09/04 説明の追記
2005/12/12 説明、返り値の記述変更
2005/09/13 初版