send

SEND(2)                     Linux Programmer's Manual                    SEND(2)



名前
       send, sendto, sendmsg - ソケットへメッセージを送る

書式
       #include <sys/types.h>
       #include <sys/socket.h>


       int send(int s, const void *msg, int len, unsigned int flags);

       int sendto(int s, const void *msg, int len, unsigned int flags, const
       struct sockaddr *to, int tolen);

       int sendmsg(int s, const struct msghdr *msg, unsigned int flags);

説明
       警告: これは BSD のマン・ページ(man page)である。Linux 0.99.11 では sendmsg はインプリメントされていない。

       send, sendto, sendmsg は他のソケット(socket)へメッセージを転送するのに使用する。 send はソケットが
       接続された(connected) 状態にある場合にのみ使用できる。一方 sendto sendmsg は何時でも使用できる。

       目的地のアドレスは to とその大きさを指定する tolen で与えられる。メッセージの長さは len で与えられる。
       もしメッセージが使用するプロトコル上を自動的に通過するには長過ぎる場合、 EMSGSIZE エラーが返され、メッセージは転送されない。

       send での配送の失敗の明示的に示されない。 ローカルに発見されたエラーは -1 を返すことによって指摘される。

       もしメッセージを転送するための十分なメッセージ空間がソケットに ない場合には、 send は通常はソケットが非停止(non-blocking)
       I/O モードでなければ停止(block)する。 さらにデータを送ることが可能かどうかを調べるために select(2)
       コールを使用することができる。

       flags パラメーターは以下のいくつかを含んでいてもよい。

              #define   MSG_OOB        0x1  /* process out-of-band data */
              #define   MSG_DONTROUTE  0x4  /* bypass routing, use direct interface */

       MSG_OOB フラグは 帯域外(out-of-band) データをサポートするソケット(例えば SOCK_STREAM )に 帯域外
       データを送るのに使用する。下位プロトコルも 帯域外 データをサポートしている必要がある。 MSG_DONTROUTE
       は大抵は診断やルーティング・プログラムによってのみ使用される。

       msghdr 構造体の内容については recv(2) を参照せよ。

返り値
       このコールは送ったキャラクターの数を返す。エラーが起こった場合は -1 が返される。

エラー
       EBADF   無効なディスクリプター(descriptor)が指定された。

       ENOTSOCK
               引き数 s がソケットでない。

       EFAULT  ユーザー空間として不正なアドレスがパラメーターとして指定された。

       EMSGSIZE
               ソケットがメッセージを自動的に転送するように求められたが、メッセージが 大き過ぎるために送信が不可能である。

       EWOULDBLOCK
               ソケットが非停止(non-blocking)に設定されており、 要求された操作が停止(block)した。

       ENOBUFS システムが内部バッファーの割当てをできなかった。 バッファーが使えるようになればこの操作は成功するだろう。

       ENOBUFS ネットワーク・インターフェースのための出力キュー(queue)が一杯である。
               これは一般に一時的な輻輳(congestion)のためにインターフェースが 送信を止めていることを意味する。


準拠
       4.4BSD, SVr4 (これらの関数コールは 4.2BSD で最初に現われた。) SVr4 版には他に EINVAL, EINTR,
       EMSGSIZE, ENOSR, ENOMEM の エラー状態についての記述がある。


関連項目
       fcntl(2), recv(2), select(2), getsockopt(2), socket(2), write(2)



BSD Man Page                      24 July 1993                           SEND(2)