我正在编写一个带有以下代码片段的服务器-客户端程序来接收数据。
ret_l = select(readfds+1, &readfds, NULL, NULL ,NULL);
if(ret_l != -1)
{
if(FD_ISSET(myfd, &readfds))
{
ret_l = recv(myfd, buf, size_of_buf_array, 0);
if(ret_l == -1)
return ;
}
}
据我所知,select()ed 文件描述符上的 recv 应该不会失败地接收数据。但是我的代码中的 recv 失败并出现错误 ETIMEDOUT。有人请告诉我为什么会这样。还请告诉我一些解决方法,即使在 ETIMEDOUT 之后也能完全接收数据。