Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ sendmsg(2) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fcntl(2)

recv(2)

select(2)

getsockopt(2)

socket(2)

write(2)

SEND(2)  —  NEWS-OS Programmer’s Manual

名称

send, sendto, sendmsg − ソケットからメッセージを送る

形式

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

cc = send(s, msg, len, flags)
int cc, s;
char ∗msg;
int len, flags;

cc = sendto(s, msg, len, flags, to, tolen)
int cc, s;
char ∗msg;
int len, flags;
struct sockaddr ∗to;
int tolen;

cc = sendmsg(s, msg, flags)
int cc, s;
struct msghdr msg[];
int flags;

解説

send、 sendto、 sendmsg は、メッセージを別のソケットへ送るために使用されます。 send は ソケットが connect されている状態にあるときにだけ使用することができます。 一方、 sendto と sendmsg は、 いつでも使用することができます。

ターゲットのアドレスは、 to によって与えられ、 tolen は、 そのアドレスのサイズを 指定します。 メッセージの長さは、 len によって与えられます。 メッセージが長すぎて使用しているプロトコルで送れない場合には、 エラー "EMSGSIZE" が返されます。

send では、 送信の失敗は明示されません。 リターン値 −1 は、 要求元で検出されたいくつかのエラーを 示します。

ソケットでメッセージスペースが不足していて、 送信するメッセージを 収容できない場合、 そのソケットが非ブロッキング入出力モードにない限り、 通常、 send はブロックします。 select(2) コールを 使用してソケットがレディーであるかどうかを 判定することができます。

flags パラメタには、 次の値を インクルードすることができます。

#defineMSG_OOB0x1/∗ process out-of-band data ∗/
#defineMSG_DONTROUTE0x4/∗ bypass routing, use direct interface ∗/

フラグ MSG_OOB は、“out-of-band” データを サポートしているソケット (例えば、 SOCK_STREAM) で、 そのようなデータを 送るときに使用することができます。 その場合、 使用しているプロトコルも “out-of-band” データを サポートしていなければなりません。 MSG_DONTROUTE は、 普通、 ダイアグまたはルーティングプログラムによって使用されるだけです。

msghdr 構造体の説明は、 recv(2) を 参照してください。

リターン値

このコールは、 送られたバイトの数を 返します。 エラーが発生した場合には、 −1 を返します。

エラー

[EBADF] 無効なディスクリプタが指定された。

[ENOTSOCK] 引数 s がソケットではない。

[EFAULT] パラメタに、 無効なユーザスペースアドレスが指定された。

[EMSGSIZE] ソケットがメッセージを 送信できない。 これは、 メッセージのサイズが原因である。

[EWOULDBLOCK] ソケットが非ブロッキングとしてマークされている場合に、 要求されたオペレーションがブロックする。

[ENOBUFS] システムが内部バッファを 割り当てることができなかった。 バッファが使用可能になったときに要求されたオペレーションが実行される。

[ENOBUFS] ネットワークインターフェースの出力キューがいっぱいであった。 普通、 これはインターフェースが送信を 停止したことを 示すが、 過度の混雑が原因となっている。

関連事項

fcntl(2), recv(2), select(2), getsockopt(2), socket(2), write(2)

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026