Socket的send函数在执行时报EAGAIN的错误
来源:互联网 发布:淘宝进货网 编辑:程序博客网 时间:2024/05/20 23:39
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函数发送大的数据包时,就可能返回一个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的错误
- 同步Socket的send函数的执行流程(转)
- linux非阻塞的socket EAGAIN的错误处理
- linux非阻塞的socket EAGAIN的错误处理
- linux非阻塞的socket EAGAIN的错误处理
- Socket的send()与recv()函数
- socket的send和recv函数详解
- Socket中send函数的理解(一)
- Socket中send函数的理解(一)
- Socket中send函数的理解
- Socket中send函数的理解
- linux非阻塞的socket发送数据出现EAGAIN错误的处理方法
- socket中send函数和recv函数的理解
- JSP所有项目在电脑上执行rs.next()时报空指针的错误的解决办法
- Socket异步通信中的EAGAIN错误
- python3中,socket使用send函数时出现的错误:TypeError: a bytes-like object is required, not 'str'
- epoll机制:epoll_create、epoll_ctl、epoll_wait、close(在epoll的ET模式下,read和write或send和recv当返回值<0且errno=EAGAIN
- 浅谈SOCKET-TCP编程中send函数的机制
- css tab选项卡
- make menuconfig的详细配置
- epoll机制
- 捕鱼山寨-------(一) 菜单
- Interactive Segmentation Tool-Box
- Socket的send函数在执行时报EAGAIN的错误
- SAX 解析 XML 文件详细解剖及案例
- 非阻IO与EWOULDBLOCK EAGAIN
- a标签内含有button不能跳转的解决方案
- 一个类型转换引起的Bug
- IOS程序国际化
- 互芯平台添加新的font
- WPF菜单与工具栏
- C++回调函数用法