User manual - PPPライブラリ解説書ver.1.01(2003年2月7日)

DT-900 PPP ライブラリ解説書
- 40 -
int recv(int s, char *buf, int len, int flags)
int recvfrom(int s, char *buf, int len, int flags, struct sockaddr *from, int *fromlen)
int recvmsg(int s, struct msghdr *msg, int flags)
int readsocket(int s, char *buf, int len)
ソケットからメッセージを受け取る BSD ルーチンです。
recv は、コネクション型で使われ、残りの二つはコネクションレス型でも使用する事が出来ます。
recvmsg は、UDP 用の関数です。
引数 int s : ソケット番号
char *buf : バッファへのポインタ
int len : バッファサイズ
int flags : フラグ
MSG_OOB ソケット上にある「帯域外」のデータの受信をしま
す。
MSG_PEEK データを取りますが、再読み出しができるように、
データをそのまま残します。
struct sockaddr *from : メッセージ発信者の sockaddr へのポインタ
int *fromlen : from のサイズへのポインタ
struct msghdr *msg : msghdr へのポインタ
戻り値 正の数 : 成功したバイト数。
-1 : エラー
-20 : 電源 ON/OFF あり。
-21 : 回線切断
-22 : ユーザーブレイク。
-23 : 内部エラー発生。
構造体"msghdr"
struct msghdr { /* Message header for recvmsg and sendmsg. */
char *msg_name; /* optional address */
int msg_namelen; /* size of address */
struct iovec *msg_iov; /* scatter/gather array */
int msg_iovlen; /* # elements in msg_iov */
char *msg_accrights; /* access rights sent/received */
int msg_accrightslen; /* access rights length */
};
struct iovec{ /* address and length */
char *iov_base; /* base */