.\" Copyright (c) 1983, 1991 The Regents of the University of California.
.\" All rights reserved.
.\"
+.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
+.\" %%%LICENSE_END
.\"
.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
.\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH SEND 2 2012\-02\-27 Linux "Linux Programmer's Manual"
+.\"
+.\" Japanese Version Copyright (c) 1996 HANATAKA Shinya all rights reserved.
+.\" Translated 1997-02-23, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
+.\" Updated 1999-08-15, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
+.\" Updated 2000-01-13, Kentaro Shirakata <argrath@ub32.org>
+.\" Updated 2001-01-30, Kentaro Shirakata <argrath@ub32.org>
+.\" Updated 2005-03-14, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\" Updated 2005-12-26, Akihiro MOTOKI
+.\" Updated 2006-04-15, Akihiro MOTOKI, LDP v2.29
+.\" Updated 2008-04-13, Akihiro MOTOKI, LDP v3.20
+.\" Updated 2012-05-04, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-03-26, Akihiro MOTOKI <amotoki@gmail.com>
+.\"
+.TH SEND 2 2014\-08\-19 Linux "Linux Programmer's Manual"
.SH 名前
send, sendto, sendmsg \- ソケットへメッセージを送る
.SH 書式
sendto(sockfd, buf, len, flags, NULL, 0);
.PP
-å¼\95ã\81\8dæ\95° \fIsockfd\fP ã\81¯ã\80\81ã\83\87ã\83¼ã\82¿ã\82\92é\80\81ä¿¡ã\81\99ã\82\8bã\83\91ã\82±ã\83\83ã\83\88ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿である。
+å¼\95ã\81\8dæ\95° \fIsockfd\fP ã\81¯ã\80\81ã\83\87ã\83¼ã\82¿ã\82\92é\80\81ä¿¡ã\81\99ã\82\8bã\83\91ã\82±ã\83\83ã\83\88ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼である。
.PP
\fBsendto\fP() は、接続型 (connection\-mode) のソケット (\fBSOCK_STREAM\fP,
\fBSOCK_SEQPACKET\fP) で 使用された場合、引き数 \fIdest_addr\fP と \fIaddrlen\fP は無視される (各々の引き数が
.PP
\fBsend\fP() では、配送の失敗の通知は明示的に行われる。 ローカル側でエラーが検出された場合は、返り値 \-1 として通知される。
.PP
-メッセージがソケットの送信バッファに入れることができない場合、 \fBsend\fP() は通常は停止 (block) する (ソケットが非停止
+ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81\8cã\82½ã\82±ã\83\83ã\83\88ã\81®é\80\81ä¿¡ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81«å\85¥ã\82\8cã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81ªã\81\84å ´å\90\88ã\80\81 \fBsend\fP() ã\81¯é\80\9a常ã\81¯å\81\9cæ¢ (block) ã\81\99ã\82\8b (ã\82½ã\82±ã\83\83ã\83\88ã\81\8cé\9d\9eå\81\9cæ¢
(nonblocking) I/O モード でない場合)。非停止モードの場合にはエラー \fBEAGAIN\fP か \fBEWOULDBLOCK\fP
で失敗する。 いつデータをさらに送信できるようになるかを知るために、 \fBselect\fP(2) コールを使用することができる。
-.PP
-.\" FIXME ? document MSG_PROXY (which went away in 2.3.15)
+.SS フラグ引き数
+.\" FIXME . ? document MSG_PROXY (which went away in 2.3.15)
\fIflags\fP 引き数は、以下のフラグの (0 個以上の) ビット単位の論理和を とったものを指定する。
.TP
\fBMSG_CONFIRM\fP (Linux 2.3.15 以降)
.TP
\fBMSG_DONTROUTE\fP
パケットを送り出すのにゲートウェイを使用せず、 直接接続されているネットワーク上のホストだけに送る。 通常、このフラグは診断 (diagnostic)
-ã\82\84ã\83«ã\83¼ã\83\86ã\82£ã\83³ã\82°ã\83»ã\83\97ã\83ã\82°ã\83©ã\83 ã\81« ã\82\88ã\81£ã\81¦ã\81®ã\81¿ä½¿ç\94¨ã\81\95ã\82\8cã\82\8bã\80\82ã\81\93ã\81®ã\83\95ã\83©ã\82°ã\81¯ã\80\81çµ\8cè·¯å\88¶å¾¡ã\81\8cè¡\8cã\82\8fã\82\8cã\82\8bã\83\97ã\83ã\83\88ã\82³ã\83«ã\83\95ã\82¡ã\83\9fã\83ªã\83¼
+やルーティングプログラムに よってのみ使用される。このフラグは、経路制御が行われるプロトコルファミリー
に対してのみ定義されている。パケットソケットには定義されていない。
.TP
\fBMSG_DONTWAIT\fP (Linux 2.2 以降)
\fBMSG_OOB\fP
\fI帯域外 (out\-of\-band)\fP データをサポートするソケット (例えば \fBSOCK_STREAM\fP) で \fI帯域外\fP
データを送る。下位プロトコルも \fI帯域外\fP データをサポートしている必要がある。
-.PP
-\fImsghdr\fP 構造体の内容は以下の通り。 各フィールドの正確な記述については \fBrecv\fP(2) と以下の説明を参照すること。
+.SS sendmsg()
+\fBsendmsg\fP() で利用されている \fImsghdr\fP 構造体は以下の通り。
.in +4n
.nf
struct iovec *msg_iov; /* scatter/gather 配列 */
size_t msg_iovlen; /* msg_iov の要素数 */
void *msg_control; /* 補助データ (後述) */
- size_t msg_controllen; /* 補助データバッファ長 */
- int msg_flags; /* 受信メッセージのフラグ */
+ size_t msg_controllen; /* 補助データバッファー長 */
+ int msg_flags; /* フラグ (未使用) */
};
.fi
.in
.PP
+フィールド \fImsg_name\fP は、 未接続のソケットでデータグラムの宛先アドレスを指定するのに使用される。
+このフィールドはアドレスを格納したバッファーを指す。 フィールド \fImsg_namelen\fP にはアドレスの大きさを設定しなければならない。
+接続済のソケットについては、これらのフィールドにはそれぞれ NULL と 0 を指定しなければならない。
+
+フィールド \fBmsg_iov\fP と \fImsg_iovlen\fP は scatter\-gather 用の場所を指定する。 \fBwritev\fP(2)
+と同じ。
+
+フィールド \fImsg_control\fP と \fImsg_controllen\fP を使用して制御情報を送信することができる。
+カーネルが処理できる制御バッファーのソケットあたりの最大長は、 \fI/proc/sys/net/core/optmem_max\fP の値に制限されている。
+\fBsocket\fP(7) を参照。
+
.\" Still to be documented:
.\" Send file descriptors and user credentials using the
.\" msg_control* fields.
-.\" The flags returned in msg_flags.
-\fImsg_control\fP と \fImsg_controllen\fP メンバーを使用して制御情報を送信することができる。
-カーネルが処理できる制御バッファのソケットあたりの最大長は、 \fI/proc/sys/net/core/optmem_max\fP の値に制限されている。
-\fBsocket\fP(7) を参照。
+フィールド \fImsg_flags\fP は無視される。
.SH 返り値
成功した場合、これらのシステムコールは送信されたバイト数を返す。 エラーの場合、 \-1 を返し、 \fIerrno\fP を適切に設定にする。
.SH エラー
-ã\81\93ã\82\8cã\82\89ã\81¯ã\82½ã\82±ã\83\83ã\83\88層ã\81§ç\99ºç\94\9fã\81\99ã\82\8bä¸\80è\88¬ç\9a\84ã\81ªã\82¨ã\83©ã\83¼ã\81§ã\81\82ã\82\8bã\80\82ã\81\93ã\82\8c以å¤\96ã\81«ã\80\81ä¸\8b層ã\81® ã\83\97ã\83ã\83\88ã\82³ã\83«ã\83»ã\83¢ã\82¸ã\83¥ã\83¼ã\83«ã\81§ç\94\9fæ\88\90ã\81\95ã\82\8cã\81\9fã\82¨ã\83©ã\83¼ã\81\8cè¿\94ã\81\95ã\82\8cã\82\8bã\81\8bã\82\82ã\81\97ã\82\8cã\81ªã\81\84ã\80\82
+これらはソケット層で発生する一般的なエラーである。これ以外に、下層の プロトコルモジュールで生成されたエラーが返されるかもしれない。
これらについては、それぞれのマニュアルを参照すること。
.TP
\fBEACCES\fP
-(UNIX ドメインソケットはパス名で識別される。) ソケット・ファイルへの書き込み許可がなかったか、パス名へ
-到達するまでのディレクトリのいずれかに対する検索許可がなかった。 (\fBpath_resolution\fP(7) も参照のこと)
+(UNIX ドメインソケットの場合; パス名で識別される。)
+
+ソケットファイルへの書き込み許可がなかったか、パス名へ到達するまでの
+ディレクトリのいずれかに対する検索許可がなかった。
+(\fBpath_resolution\fP(7) も参照のこと)
+.sp
+(UDP ソケットの場合) ユニキャストアドレスであるかのように、
+ネットワークアドレスやブロードキャストアドレスへの送信が試みられた。
.TP
\fBEAGAIN\fP または \fBEWOULDBLOCK\fP
.\" Actually EAGAIN on Linux
ソケットが非停止に設定されており、 要求された操作が停止した。 POSIX.1\-2001 は、この場合にどちらのエラーを返すことも認めており、 これら
2 つの定数が同じ値を持つことも求めていない。 したがって、移植性が必要なアプリケーションでは、両方の可能性を 確認すべきである。
.TP
+\fBEAGAIN\fP
+(インターネットドメインデータグラムソケットの場合) \fIsockfd\fP が参照するソケットがそれ以前にアドレスにバインドされておらず、
+そのソケットに一時ポートをバインドしようとした際に、 一時ポートとして使用する範囲のポート番号がすべて使用中であった。 \fBip\fP(7) の
+\fI/proc/sys/net/ipv4/ip_local_port_range\fP の議論を参照のこと。
+.TP
\fBEBADF\fP
無効なディスクリプターが指定された。
.TP
そのソケット種別 ではソケットに渡されたままの形でメッセージを送信する必要があるが、 メッセージが大き過ぎるため送信することができない。
.TP
\fBENOBUFS\fP
-ã\83\8dã\83\83ã\83\88ã\83¯ã\83¼ã\82¯ã\83»ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81®å\87ºå\8a\9bã\82ã\83¥ã\83¼ã\81\8cä¸\80æ\9d¯ã\81§ã\81\82ã\82\8bã\80\82 ä¸\80è\88¬ç\9a\84ã\81«ã\81¯ã\80\81ä¸\80æ\99\82ç\9a\84ã\81ªè¼»è¼³ (congestion) ã\81®ã\81\9fã\82\81ã\81«ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81\8c
+ネットワークインターフェースの出力キューが一杯である。 一般的には、一時的な輻輳 (congestion) のためにインターフェースが
送信を止めていることを意味する。 (通常、Linux ではこのようなことは起こらない。デバイスのキューが
オーバーフローした場合にはパケットは黙って捨てられる)
.TP
\fBENOMEM\fP
-メモリが足りない。
+ã\83¡ã\83¢ã\83ªã\83¼ã\81\8c足ã\82\8aã\81ªã\81\84ã\80\82
.TP
\fBENOTCONN\fP
ソケットが接続されておらず、接続先も指定されていない。
POSIX.1\-2001 には、 \fBMSG_OOB\fP と \fBMSG_EOR\fP フラグだけが記載されている。 POSIX.1\-2008 では
\fBMSG_NOSIGNAL\fP が規格に追加されている。 \fBMSG_CONFIRM\fP フラグは Linux での拡張である。
.SH 注意
-上記のプロトタイプは Single UNIX Specification に従っている。 glibc2 も同様である。 \fIflags\fP 引き数は
-4.x BSD では \fIint\fP であり、 libc4 と libc5 では \fIunsigned int\fP である。 \fIlen\fP 引き数は 4.x
-BSD と libc4 では \fIint\fP であり、 libc5 では \fIsize_t\fP である。 \fIaddrlen\fP 引き数は 4.x BSD と
-libc4 と libc5 では \fIint\fP である。 \fBaccept\fP(2) も参照すること。
-
.\" glibc bug raised 12 Mar 2006
.\" http://sourceware.org/bugzilla/show_bug.cgi?id=2448
.\" The problem is an underlying kernel issue: the size of the
\fBfcntl\fP(2), \fBgetsockopt\fP(2), \fBrecv\fP(2), \fBselect\fP(2), \fBsendfile\fP(2),
\fBsendmmsg\fP(2), \fBshutdown\fP(2), \fBsocket\fP(2), \fBwrite\fP(2), \fBcmsg\fP(3),
\fBip\fP(7), \fBsocket\fP(7), \fBtcp\fP(7), \fBudp\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。