Кусок кода:
while((retn >= MAX_CHUNK)&&(retval>0))
{
retval=0;
retval = select(fd+1,&rdfs,NULL,NULL,&tv);
retn = recv(fd, buf, MAX_CHUNK, NULL);
/*receiving chunks*/
if(retval<=0)printf("No data has arrived in 2 secs\n");
write(fame_d,buf,retn); /*writing chunks into file*/
}
дело в том, что будет retval неположительным или нет - а цикл не закончится, пока не произойдет recv. Как сделать так, чтобы прервать while когда retval вернет что-нибудь <=0 (то есть установленное время для чтения истечет)? То есть, чтоб select служил своего рода таймером?
Плиз, кто может, посоветуйте. Есть ли другой способ поставить таймер на чтение из сокета (чтоб по истечении установленного времени чтение прерывалось, если получено 0 байт)?
Н-дя... наверное, вопрос тупой.
Форум —
Development