>[оверквотинг удален]
>
> return read(sid, buf, PACKET_SIZE-1);
> }else{
>
> return -1;
> }
>
>Но если клиент закрывает свой сокет то моя задача сразу закрывается, а
>хотелось бы самому обрабатывать закрытие, т.к. надо перед закрытием ещё чтото
>сделать. Ну гдето вот так, тестовый код сервера, прием данных с определенного connect в не блокируешем режиме:
memset( buff , 0 , SIZE_BUFF_RECEIV );
check = recv(connect , buff , SIZE_BUFF_RECEIV , 0);
if(check == 0){
if(timeout <= time(NULL)){
check = send(connect , buff , 1 , 0);
if(check == -1){
//delet_connect;
break;
}
timeout = time(NULL) + timeout_check;
continue;
}
}
if(check == -1){
if(errno != EAGAIN){
//delet_connect
break;
}
else{
if(timeout <= time(NULL)){
check = send(connect , buff , 1 , 0);
if(check == -1){
//delet_connect
break;
}
timeout = time(NULL) + timeout_check;
continue;
}
}
}
else{
// пришли данные
timeout = time(NULL) + timeout_check;
}