send函数返回EAGAIN问题
在使用socket时 send()返回的是成功copy到socket缓冲区的数据大小
如果返回-1的话 我查了一下 好像是socket缓冲区剩余空间大小小于要发送的数据长度 也可以说缓冲区满了
那如果我这边缓冲区没满 而接收方的缓冲区满了 send()应该返回什么呢
我这边返回的异常信息是EAGAIN
请大家帮忙指点!
如果返回-1的话 我查了一下 好像是socket缓冲区剩余空间大小小于要发送的数据长度 也可以说缓冲区满了
那如果我这边缓冲区没满 而接收方的缓冲区满了 send()应该返回什么呢
我这边返回的异常信息是EAGAIN
请大家帮忙指点!
...全文
相关推荐
socket之send函数使用[代码]
在使用send函数时,还可能遇到各种情况,如网络阻塞导致数据暂时无法发送。在这种情况下,需要正确处理send函数返回的错误码,如EAGAIN或EWOULDBLOCK,它们表明应该稍后再试。
Fix socket send
该修复工作通常涉及底层系统调用行为的深入分析,包括但不限于send()、sendto()、sendmsg()等函数在不同操作系统环境下的语义差异、返回值处理逻辑、错误码映射机制以及阻塞与非阻塞模式下的状态响应
linux消息函数分析
- `msg_send()`用于将消息发送到消息队列,需要处理并发控制和队列满的条件。 - `msg_recv()`则是接收消息的函数,它会等待匹配的消息出现,或者在适当条件下阻塞或返回错误。
腾讯09年技术类面试题收集和面试成功的心得体会
- 第二种方法,即直接写(directly-write),尝试直接调用send(),只有在出现EAGAIN错误时才将socket加入epoll等待可写事件。
基于 epoll 水平触发的 TCP 文件传输设计与实现
客户端与服务端建立标准 TCP 连接后,服务端为每个已连接的客户端套接字分配独立缓冲区,并在每次 epoll_wait 返回可读事件时,循环调用 recv 函数直至返回 EAGAIN 或 EWOULDBLOCK


