Linux Socket: Jak wykryć odłączoną sieć w programie klienta?

Debuguję program linuxowy oparty na gniazdach c. Jak wszystkie przykłady dostępne na stronach internetowych, zastosowałem następującą strukturę:

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);

Mogę wykryć rozłączenie, gdy serwer usuwający zamyka swój program serwera. Ale jeśli odłączę kabel Ethernet, funkcja wysyłania nadal zwraca wartości dodatnie, a nie -1.

Jak mogę sprawdzić połączenie sieciowe w programie klienta, zakładając, że nie mogę zmienić strony serwera?

questionAnswers(4)

yourAnswerToTheQuestion