Sprawdź, czy gniazdo jest podłączone czy nie [duplikat]
To pytanie ma już odpowiedź tutaj:
Jak znaleźć stan połączenia gniazda w C? 9 odpowiedziMam aplikację, która w pewnym momencie musi wysłać dane do serwera. Najprościej byłoby zamknąć połączenie, a następnie otworzyć je ponownie, gdy chcę coś wysłać. Ale chcę utrzymać połączenie otwarte, więc kiedy chcę wysłać dane, najpierw sprawdzam połączenie za pomocą tej funkcji:
bool is_connected(int sock)
{
unsigned char buf;
int err = recv(sock,&buf,1,MSG_PEEK);
return err == -1 ? false : true;
}
Złą stroną jest to, że to nie działa. Zawiesza się, gdy nie ma danych do odebrania. Co mogę zrobić? Jak mogę sprawdzić, czy połączenie jest nadal otwarte?