sendto サブルーチン
目的
ソケットを介してメッセージを送信します。
ライブラリー
標準 C ライブラリー (libc.a)
構文
説明
Sendto サブルーチンを使用すると、アプリケーション・プログラムは、宛先アドレスを指定することによって、接続されていないソケットを介してメッセージを送信することができます。
ソケットでブロードキャストするには、まず、 So_ ブロードキャスト オプションを使用して setsockopt サブルーチンを発行し、ブロードキャスト許可を取得します。
終了 パラメーターを使用して、ターゲットのアドレスを指定します。 長さ パラメーターを使用して、メッセージの長さを指定します。 メッセージが長すぎて基礎となるプロトコルをパススルーできない場合は、エラー EMSG サイズ が返され、メッセージは送信されません。
送信 ソケットに、送信されるメッセージを保持するスペースがない場合、ソケットが非ブロッキング入出力モードでない限り、 Sendto サブルーチンはメッセージをブロックします。
選択 サブルーチンを使用して、いつより多くのデータを送信できるかを判別します。
ソケット・アプリケーションは、 COMPAT_43 を定義してコンパイルすることができます。 これにより、 sockaddr 構造体は BSD 4.3 と互換性を持ちます。 詳しくは、 socket.hを参照してください。
パラメーター
| 項目 | 説明 |
|---|---|
| ソケット | ソケットの固有の名前を指定します。 |
| Message | 送信するメッセージが入っているアドレスを指定します。 |
| 長さ | メッセージのサイズをバイト単位で指定します。 |
| flags | 送信側がメッセージ伝送を制御できるようにします。 呼び出しを送信するために使用される フラグ パラメーターは、以下の値のいずれかまたは両方を論理 OR 演算することによって形成されます。
注:
/usr/include/sys/socket.h ファイルは、 Flags パラメーターを定義します。 |
| TO | メッセージの宛先アドレスを指定します。 宛先アドレスは、 /usr/include/sys/socket.h ファイルに定義された sockaddr 構造体です。 |
| ToLength | 宛先アドレスのサイズを指定します。 |
戻り値
正常終了すると、 Sendto サブルーチンは送信された文字数を戻します。
sendtoサブルーチンが失敗した場合、システムは値-11を返し、エラーを示す errnoグローバル変数が設定される。
エラー・コード
以下のいずれかのエラーが発生すると、サブルーチンは失敗します。
| エラー | 説明 |
|---|---|
| EACCES | 指定されたソケットへの書き込みアクセスが拒否されたか、ブロードキャスト・パケットを送信しようとしたソケットにブロードキャスト機能がありません。 |
| EADDRNOTAVAIL | 指定されたアドレスは有効なアドレスではありません。 |
| EAFNOSUPPORT | 指定されたアドレスは、このソケットのアドレス・ファミリーの有効なアドレスではありません。 |
| EBADF | ソケット パラメーターが有効ではありません。 |
| ECONNRESET | 接続はピアによって強制的にクローズされました。 |
| EDESTADDRREQ | ソケットが接続モードでなく、ピア・アドレスが設定されていません。 |
| EFAULT | 住所 パラメーターは、ユーザー・アドレス・スペースの書き込み可能部分にはありません。 |
| EHOSTUNREACH | 宛先ホストに到達できません。 |
| EINTR | データが伝送される前に、シグナルが Sendto に割り込まれました。 |
| EINVAL | Length または ToLength パラメーターが無効です。 |
| EISCONN | _ 翻訳不要 _SOCK_DGRAM ソケットは既に接続されています。 |
| EMSGSIZE | メッセージが大きすぎて、ソケットの要求どおりに一度にすべてを送信することができません。 |
| ENETUNREACH | 宛先ネットワークに到達できません。 |
| ENOBUFS | システムが内部データ構造のためのメモリーを使い尽くしました。 |
| ENOENT | パス名が既存のファイルの名前ではないか、パス名が空ストリングです。 |
| ENOMEM | メモリー内の使用可能なデータ・スペースが、グループ /ACL 情報を保持するのに十分な大きさではありません。 |
| ENOPROTOOPT | プロトコルが 64 ビット対応ではありません。 |
| ENOTCONN | ソケットは接続モードですが、接続されていません。 |
| ENOTSOCK | ソケット パラメーターは、ソケットではなくファイルを参照します。 |
| EOPNOTSUPP | ソケット引数が、 フラグに設定された 1 つ以上の値をサポートしないソケットに関連付けられています。 |
| EPIPE | 接続されたソケットで送信しようとしましたが、リモート・ピアまたは接続のこのサイドのいずれかによって接続がシャットダウンされました。 ソケットのタイプが SOCK_ ストリームの場合、呼び出しプロセスに対して シGPIPE シグナルが生成されます。 |
| EWOULDBLOCK | ソケットは非ブロッキングとしてマークされ、受け入れられる接続は存在しません。 |