C语言recvmsg()函数:经socket接收数据
相关函数:recv, recvfrom, send, sendto, sendmsg, socket

头文件:#include <sys/types.h>   #include <sys/socktet.h>

定义函数:int recvmsg(int s, struct msghdr *msg, unsigned int flags);

函数说明:recvmsg()用来接收远程主机经指定的socket 传来的数据. 参数s 为已建立好连线的socket, 如果利用UDP 协议则不需经过连线操作. 参数msg 指向欲连线的数据结构内容, 参数flags 一般设0, 详细描述请参考send(). 关于结构msghdr 的定义请参考sendmsg().

返回值:成功则返回接收到的字符数, 失败则返回-1, 错误原因存于errno .

错误代码:
   EBADF 参数s 非合法的socket 处理代码.
   EFAULT c语言struct头文件参数中有一指针指向无法存取的内存空间
   ENOTSOCK 参数s 为一文件描述词, socket.
   EINTR 被信号所中断.
   EAGAIN 此操作会令进程阻断, 但参数s socket 为不可阻断.
   ENOBUFS 系统的缓冲内存不足
   ENOMEM 核心内存不足
   EINVAL 传给系统调用的参数不正确.

范例:参考recvfrom().