Linux Socket: Como detectar rede desconectada em um programa cliente?

Eu estou depurando um programa de soquete linux baseado em c. Como todos os exemplos disponíveis em sites, apliquei a seguinte estrutura:

sockfd= socket(AF_INET, SOCK_STREAM, 0);

connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr));

send_bytes = send(sockfd, sock_buff, (size_t)buff_bytes, MSG_DONTWAIT);

Eu posso detectar a desconexão quando o servidor de remoção fecha seu programa de servidor. Mas se eu desconectar o cabo ethernet, a função send ainda retornará valores positivos em vez de -1.

Como posso verificar a conexão de rede em um programa cliente supondo que não posso alterar o lado do servidor?

questionAnswers(4)

yourAnswerToTheQuestion