Adopper 2023-01-15 12:30 采纳率: 44.4%
浏览 38

recv一直返回-1,过了很久才返回0

linux下使用非阻塞的socket编程使用recv接收数据

img

如图,发送请求过来后会遇到recv返回-1,errno是EAGAIN,重新循环读数据,必须要等超长时间(大概十分钟),recv才会返回0,完成读取,否则就一直陷入循环。
怎么办。

  • 写回答

1条回答 默认 最新

  • Halifax ‎ 2023-01-15 12:39
    关注

    望采纳。。

    recv 等于-1 的时候,一般是连接断开。

    如果没有断开,你可以尝试调用一下 close(m_sockfd),然后重新去创建初始化一个 m_sockfd,再去调用 recv 去等待接收。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月15日