网络函数[09]网络发送函数解析

1 -- recv函数详解
#include <sys/socket.h>

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

返回值:
>0:读取数据成功,返回值表示本次读取数据的Byte数目;
=0:表示当前套接口已没有数据可读取,并且被对端主动关闭了;
-1:读取数据失败,系统设置相应errno值,具体错误原因及应对措施需参考errno;


recv函数返回-1时,需要判断errno来决定应对措施。下面我试着讲述这些errno以及产生原因。

EAGAIN or EWOULDBLOCK
产生原因:当socket被设置为非阻塞链接,并且当前套接口上没有数据可读时,产生这个错误码。

应对措施:不关闭当前链接,将该fd放入到监听队列中,等待其变为可读后,再次进行读取。

posted @ 2011-01-04 19:34  酱油和醋  阅读(177)  评论(0编辑  收藏  举报