У меня есть приложение, которое должно отправить некоторые данные на сервер в какое-то время. Простым способом было бы закрыть соединение, а затем снова открыть его, когда я хочу что-то отправить. Но я хочу сохранить соединение открытым, поэтому, когда я хочу отправить данные, я сначала проверяю соединение, используя эту функцию:
bool is_connected(int sock)
{
unsigned char buf;
int err = recv(sock,&buf,1,MSG_PEEK);
return err == -1 ? false : true;
}
Плохая часть заключается в том, что это не работает. Он зависает, когда нет данных для получения. Что я могу сделать? Как я могу проверить, все ли соединение открыто?