函数原型:

ssize_t recv(int sockfd, void *buf, size_t len, int flags);

该函数第一个参数制定接收端套接字描述符;

第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据;

第三个参数指明缓冲区buf的长度;

第四个参数一般置0; (标志位)

recv函数返回其实际copy的字节数。如果recv在copy时出错,那么它返回SOCKET_ERROR; 如果recv函数在等待协议接收数据时网络中断了,那么它返回0;

recv函数仅仅是copy数据, 真正的接收数据是协议来完成的。

默认recv函数socket 是阻塞的

阻塞与非阻塞recv返回值没有区分,都是

<0 出错

=0 连接关闭

>0 接收到数据大小,

特别:返回值<0时并且(errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况下认为连接是正常的,继续接收。

只是阻塞模式下recv会阻塞着接收数据,非阻塞模式下如果没有数据会返回,不会阻塞着读,因此需要循环读取)。

返回说明:

成功执行时,返回接收到的字节数。另一端已关闭则返回0。失败返回-1,errno被设为以下的某个值

EAGAIN:套接字已标记为非阻塞,而接收操作被阻塞或者接收超时

EBADF:sock不是有效的描述词

ECONNREFUSE:远程主机阻绝网络连接

EFAULT:内存空间访问出错

EINTR:操作被信号中断

EINVAL:参数无效

ENOMEM:内存不足

ENOTCONN:与面向连接关联的套接字尚未被连接上

ENOTSOCK:sock索引的不是套接字

当返回值是0时,为正常关闭连接;

mysql linux 函数返回值_linux recv函数返回值分析相关推荐

  1. c语言recv函数返回值,谈谈recv()函数的返回值

    网上某论坛有这样一个问题:当recv()函数的返回值为0时,能不能在接收端不关闭套接字,以便这条建立好的C/S通信下次可以直接使用? 我对这个问题的回答是:不能. 原因是:此时即使接收端不关闭套接字, ...

  2. linux内核中send与recv函数详解

    Linux send与recv函数详解 1.简介 #include <sys/socket.h> ssize_t recv(int sockfd, void *buff, size_t n ...

  3. 关于SOCKET中send和recv函数工作原理总结

    send函数工作原理: send函数只负责将数据提交给网络协议层. 当调用该函数时,send先比较待发送数据的长度len和套接字s的发送缓冲区的长度,如果len大于s的发送缓冲区的长度,该函数返回SO ...

  4. socket api中send()和recv()函数工作原理与要点

    send()和recv()函数是网络编程中经常使用到的函数,下面详细的比较两者的不同之处 send函数工作原理: send函数只负责将数据提交给协议层. 当调用该函数时,send先比较待发送数据的长度 ...

  5. linux socket recv函数如何判断收完一包_linux 下经典 IO 复用模型 epoll 的使用

    1. 概述 epoll 是 linux 内核为处理大批量文件描述符而对 poll 进行的改进版本,是 linux 下多路复用 IO 接口 select/poll 的增强版本,显著提高了程序在大量并发连 ...

  6. linux socket recv函数如何判断收完一包_linux服务器端编程之高性能服务器架构设计总结...

    所谓高性能就是服务器能流畅地处理各个客户端的连接并尽量低延迟地应答客户端的请求:所谓高并发,指的是服务器可以同时支持多的客户端连接,且这些客户端在连接期间内会不断与服务器有数据来往. 这篇文章将从两个 ...

  7. 非阻塞模式下 SEND 和 RECV 函数的返回值总结

    send 和 recv 函数的各种返回值意义: 返回值 n 返回值含义 大于 0 成功发送 n 个字节 0 对端关闭连接 小于 0( -1) 出错或者被信号中断或者对端 TCP 窗口太小数据发不出去( ...

  8. ftok file php,Linux和PHP中的ftok函数返回值不一致问题跟踪

    在IPC中中,我们经常事情ftok函数来获取key,来作为获取消息队列id.共享存储标识和信号量ID.在项目中使用了php进程和linux进程通信,采用了消息队列的方式,但是结果表现为php中的fto ...

  9. recv函数返回值说明

    recv函数 int recv( SOCKET s, char FAR *buf, int len, int flags); 不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据. ...

最新文章

  1. 汇编语言等号=伪指令
  2. 深度解析利用ES6进行Promise封装总结
  3. PHP函数-判断字符是否在于指定的字符串中
  4. Grid R-CNN解读:商汤最新目标检测算法
  5. php 手册中show的使用,文档工具--showdoc(一)
  6. 问答| 四轮驱动移动机器人(SSMR)简化模型的虚拟轮间距dLR具体是多少
  7. Test: 为WLW添加源代码着色插件WindowsLiveWriter.CNBlogs.CodeHighlighter
  8. matlab关于图像切割的一些总结:imcrop,getrect,ndgrid,函数
  9. java环境配好后jar文件打开闪退,无打开方式,无反应
  10. 冰点文库的替代品【Wenku Doc Downloader】用于下载各种文库的材料
  11. pale moon 最新版中文包安装方法
  12. qcon_从QCon San Francisco 2008中学到的主要知识点和教训
  13. 压力传感器的种类与工作原理
  14. java设计模式--装饰器模式
  15. Apache端口占用解决办法
  16. 失物招领小程序_上线了!| 失物招领平台全新上线!
  17. python+selenium实现自动刷新网页
  18. 计算机与地震论文,地震数据论文,关于地震处理技术新进展相关参考文献资料-免费论文范文...
  19. 大数据可视化陈为智慧树_知到智慧树_大数据可视化_大学课后答案
  20. 2020年vn.py项目计划

热门文章

  1. APISpace 让你快速获取名言警句
  2. Linux 搭建zookpeer集群和配置
  3. 浅析:XSS攻击、SQL注入攻击和CSRF攻击
  4. I2C的ACK和NACK
  5. 开源项目CIIP(企业信息管理系统框架).2018.1.0910版更新介绍-上周工作总结
  6. stm32L0系统----开发环境搭建
  7. 【从0到1搭建LoRa物联网】11、ASR6505 LoRaWAN通信
  8. 点击放大 swiper+photoswipe
  9. VMware 12 Exception 0xc0000005
  10. binwalk有MySQL_linux – 使用binwalk提取所有文件