网络函数[00]函数总述

3 -- recv函数
#include <sys/socket.h>

ssize_t recv(int socket, void * buffer, size_t length, int flags);

返回值:
>0:读取数据成功,返回值表示本次读取数据的Byte数目;
=0:表示当前套接口已没有数据可读取,并且被对端主动关闭了;
-1:读取数据失败,系统设置相应errno值,具体错误原因及后续采取的应对措施需参考errno;
recv的相关说明:
recv函数的作用就是"receive a message from a connected socket ",也就是在已连接的套接口上读取数据,可见它适用于TCP协议,不适合UDP协议。

recv错误原因及应对措施:
ret == -1 && errno == EAGAIN or EWOULDBLOCK
该错误码表示非阻塞的套接口上当前已没有数据可读。

这种情况下,不再尝试从该套接口上读取数据,将其放入select或者epoll中等待再次变为可读。

ret == -1 && errno == ECONNRESET
该错误码表示连接被对端强制关闭。

这种情况下,将该文件描述符从进程中移除。如果继续向对端发送数据,需要再次建立连接后发送。
posted @ 2010-10-26 23:24  酱油和醋  阅读(183)  评论(0编辑  收藏  举报