Здравствуйте Gosha, Вы писали:
G>Здравствуйте Corvin, Вы писали:
C>>Такой проблем: есть клиент и сервер. На клиенте открывается окошко куда ждут ввод, но если связь с сервером обрывается это окошко надо закрыть. Для проверки наличия связи на клиенте вызываю recv. G>Проверить сокет на возможность записи в него данных можно с помощью функции select (см. аргумент writefds) C>>И если получается ошибка, окошко закрываем.
Неправильно. Сокет закрыт <=> recv возвращает 0.
G>Но это вообщем-то не важно. Проблема видимо в твоей проверке recv-ом и в том, что у recv-а есть таймаут на получение данных. Видимо, пока этот таймаут не проходит — клиент висит. Так что select.
Не пойдет. select через readfds скажет, что из сокета можно прочитать либо что сокет закрыт. При этом для проверки "закрыт ли сокет?" по любому придется вызывать recv.