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?