| 総合手引 | セクション 2 | English | オプション |
#include <sys/types.h>
#include <sys/socket.h>
ターゲットのアドレスを to で与え、 tolen でそのサイズを指定します。 メッセージの長さは len で指定します。 メッセージが長すぎて基層となるプロトコルを不可分に通過できない場合、 エラー EMSGSIZE を返し、メッセージを送信しません。
send() では、配送できないことはまったく示されません。 戻り値 -1 はローカルで検出されたエラーを示します。
送信するメッセージを保持するスペースがソケットに無い場合 send() は通常ブロックします。 ただし、ソケットが非ブロッキング入出力モードに設定されている場合は別です。 select(2) システムコールを使用して、さらに多くのデータをいつ送信できるか判定できます。
flags 引数には次に示されるもののうち 1 つまたは複数を含めることが可能です:
#define MSG_OOB 0x1 /* 帯域外データを処理する */
#define MSG_PEEK 0x2 /* 着信メッセージを覗く */
#define MSG_DONTROUTE 0x4 /* ルーティングをバイパスし、
インタフェースを直接使用する */
#define MSG_EOR 0x8 /* このデータでレコードを終了する */
#define MSG_EOF 0x100 /* このデータでトランザクションを終了する */
フラグ MSG_OOB は、この概念をサポートするソケット (たとえば、 SOCK_STREAM) 上の "帯域外" データを送信するのに使用されます。 基層となっているプロトコルも "帯域外" データをサポートする必要があります。 MSG_EOR は、この概念をサポートするプロトコル用のレコードマークを示すのに使用されます。 MSG_EOF は、ソケットの送信側のシャットダウンを要求し、 指定データの終了時に、適切な指示の送信を要求します。 このフラグは、 PF_INET プロトコルファミリの SOCK_STREAM ソケットについてだけ実装され、トランザクション TCP ((ttcp) 4 を参照) を実装するのに使用されます。 MSG_DONTROUTE は通常、診断プログラムまたは経路設定プログラムで使用されます。
msghdr 構造体の詳細については、 recv(2) を参照してください。
| [EBADF] | |
| 無効な記述子が指定されました。 | |
| [EACCES] | |
| 宛先アドレスはブロードキャストアドレスであり、 SO_BROADCAST がソケット上に設定されていません。 | |
| [ENOTSOCK] | |
| 引数 s がソケットではありません。 | |
| [EFAULT] | |
| 引数について無効なユーザ空間アドレスが指定されました。 | |
| [EMSGSIZE] | |
| ソケットはメッセージが不可分に送信されることを要求していますが、 送信されるメッセージのサイズでは不可能です。 | |
| [EAGAIN] | |
| ソケットは非ブロッキングとマークされており、 要求された操作はブロックされるでしょう。 | |
| [ENOBUFS] | |
| システムは内部バッファを割り当てることができませんでした。 バッファが利用可能になったときに操作が成功する可能性があります。 | |
| [ENOBUFS] | |
| ネットワークインタフェース用の出力キューが満杯でした。 これは一般に、インタフェースが送信を停止したものの、 それが一時的な輻輳によって起こったことを示します。 | |
| [EHOSTUNREACH] | |
| リモートホストに到達できませんでした。 | |
| [EISCONN] | |
| 宛先アドレスが指定され、そしてソケットは既に接続されています。 | |
| [ECONNREFUSED] | |
| ソケットが、ICMP 宛先不到達メッセージを、 最後に送信したメッセージから受信しました。 典型的には、受信者がリモートポートで待機していないことを意味します。 | |
| [EHOSTDOWN] | |
| リモートホストがダウンしていました。 | |
| [ENETDOWN] | |
| リモートネットワークがダウンしていました。 | |
| [EPERM] | |
| SOCK_RAW ソケットを使用しているプロセスが jail の中にあり、IP ヘッダの 中で指定されている送信元のアドレスが、その捕虜プロセスに 結び付けられている IP アドレスと一致しませんでした。 | |
| [EPIPE] | |
| ソケットがこれ以上データを送信できません ( SBS_CANTSENDMORE がそのソケットに設定されています)。 これは通常、そのソケットが接続されていないことを意味します。 | |
| SEND (2) | February 15, 1995 |
| 総合手引 | セクション 2 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
| “ | A typical Unix /bin or /usr/bin directory contains a hundred different kinds of programs, written by dozens of egotistical programmers, each with its own syntax, operating paradigm, rules of use ... strategies for specifying options, and different sets of constraints. | ” |
| — The Unix Haters' handbook | ||