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