曲径通幽论坛

标题: recvfrom() -- UDP 接收数据 [打印本页]

作者: beyes    时间: 2010-4-3 14:40
标题: recvfrom() -- UDP 接收数据
函数原型
#include <sys/types.h>
#include <sys/socket.h>

ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen);

参数说明
recvfrom() 出错时返回 -1;成功时返回接收到的数据长度,数据的长度可以为 0,因此如果函数返回值为 0 并不表示发生了错误,仅能表示此时系统中接收不到数据。发生错误时,错误值保存在 errno 中,errno 的值和含义如下表所示:

含义
EGAIN
接收超时,或者套接字描述符设置为非阻塞,而此时没有数据
EGAIN/EWOULDBLOCK
此socket使用了非阻塞模式,当前情况下没有可接受的连接
EBADF
描述符非法
ECONNABORTED
连接取消
EINTR
信号在合法连接到来之前打断了 accept 的系统调用
EINVAL
socket没有侦听连接或者地址长度不合法
EMFILE
每个进程允许打开的文件描述符数量最大值已经到达
ENFILE
达到系统允许打开文件的总数量
ENOTSOCK
文件描述符是一个文件,不是 socket
EOPNOTSUPP
引用的 socket 不是流类型 SOCK_STREAM
EFAULT
参数 addr 不可写
ENOBUFS/ENOMEM
内存不足
EPROTO
协议错误
EPERM
防火墙不允许连接





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2