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 参数中有一指针指向无法存取的内存空间
ENOTSOCK 参数s 为一文件描述词, 非socket.
EINTR 被信号所中断.
EAGAIN 此操作会令进程阻断, 但参数s 的socket 为不可阻断.
ENOBUFS 系统的缓冲内存不足
ENOMEM 核心内存不足
EINVAL 传给系统调用的参数不正确.
范例:参考recvfrom().
头文件:#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 参数中有一指针指向无法存取的内存空间
ENOTSOCK 参数s 为一文件描述词, 非socket.
EINTR 被信号所中断.
EAGAIN 此操作会令进程阻断, 但参数s 的socket 为不可阻断.
ENOBUFS 系统的缓冲内存不足
ENOMEM 核心内存不足
EINVAL 传给系统调用的参数不正确.
范例:参考recvfrom().