Socket的send函数在执行时报EAGAIN的错误]

内容提要:

当客户通过Socket提供的send函数发送大的数据包时,就可能返回一个EGGAIN的错误。该错误产生的原因是由于send

函数中的size变量大小超过了tcp_sendspace的值。tcp_sendspace定义了应用在调用send之前能够在kernel中缓存的数据量。当应用程序在socket中设置了O_NDELAY或者O_NONBLOCK属性后,如果发送缓存被占满,send就会返回EAGAIN的错误。

为了消除该错误,有三种方法可以选择: 
1.调大tcp_sendspace,使之大于send中的size参数 
---no -p -o tcp_sendspace=65536

2.在调用send前,在setsockopt函数中为SNDBUF设置更大的值

3.使用write替代send,因为write没有设置O_NDELAY或者O_NONBLOCK

Socket的send函数在执行时报EAGAIN的错误相关推荐

  1. Socket中send()函数和rece()函数详解

    1.send函数 int send (SOCKET s, const char FAR *buf. int len,int flags); 不论是客户还是服务器应用程序都是用send函数来向TCP连接 ...

  2. Socket中send()函数和recv()函数详解

    目录 1.send函数 2.recv函数 关于socket的send和recv的超时设置 1.send函数 int send( SOCKET s, const char FAR *buf, int l ...

  3. java socket send_Socket send函数和recv函数详解

    int send( SOCKET s,      const char FAR *buf,      int len,      int flags ); 不论是客户还是服务器应用程序都用send函数 ...

  4. socket编程---send函数recv函数详解

    一.send函数 函数原型:int send( SOCKET s,char *buf,int len,int flags ); 功能:不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端 ...

  5. java socket recv_Socket send函数和recv函数详解

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

  6. Socket send函数和recv函数详解

    1.send 函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP ...

  7. linux socket send函数和recv函数详解以及修改缓冲区大小

    一.send/recv详解 1.send 函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程 ...

  8. socket c语言 AF_TIPC,socket编程 send() recv() sendto() recvfrom()

    socket编程 send() recv() sendto() recvfrom() int socket( int af, int type, int protocol); af: 指定一个协议簇( ...

  9. linux非阻塞的socket EAGAIN的错误处理【转】

    转自:http://blog.csdn.net/tianmohust/article/details/8691644 版权声明:本文为博主原创文章,未经博主允许不得转载. 在Linux中使用非阻塞的s ...

最新文章

  1. 如何将图片中的一个任意四边形区域的图像转化为矩形【附源码】
  2. 将基于 .NET Framework 的 WPF 项目迁移到基于 .NET Core 3
  3. RocketMQ性能压测分析(转载)
  4. 使用IDA PRO+OllyDbg+PEview 追踪windows API 动态链接库函数的调用过程
  5. html5基础知识点盒子
  6. Moodle插件开发笔记
  7. MySQL 8.0.16安装(win64)
  8. 两轮差速驱动机器人轮间距校准方法
  9. 3D打印技术最全解析:从设计到工艺
  10. SAI绘制神秘人教程
  11. 群联2251-07 海力士TLC-16K 颗粒 U盘重新量产记录
  12. 如何打开计算机控制面板,控制面板怎么打开 快速打开控制面板方法大全-电脑教程...
  13. 【长难句分析精讲】状语从句
  14. mysql高级查询之性能分析explain和日志查看
  15. TextView 加下划线 、 中划线
  16. 差旅安全,你了解多少?
  17. NO-SQL(非关系型)数据库性能横向比较
  18. UE4 C++ 动态读取图片
  19. AStar(A*)算法
  20. 【FPGA的基础快速入门15------DS18B20数字温度传感器】

热门文章

  1. mysql 使用索引_mysql使用索引的注意事项
  2. 11 | 排序(上):为什么插入排序比冒泡排序更受欢迎?
  3. 拦截器,利用拦截器进行登陆权限控制
  4. mvc自定义日期转换器
  5. Java枚举的定义,使用
  6. 1099. Build A Binary Search Tree (30)
  7. oracle透明网关 中文,Oracle透明网关的一些文章
  8. 【vue开发】vue插件的install方法
  9. 51单片机学习笔记之定时器程序设计
  10. 绝对定位和浮动的区别和运用