| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > сонный read и оповещение его о смерти сокета |
| Автор: exceilence 14.11.2009, 11:39 |
| Как оповестить read которые ждёт данных из сокета о том, что сокет закрыли? Если б я не видел, что read узнаёт об этом когда я жму на крестик!! и возвращает неположительное значение, то не поднгимал бы тему если я закрываю сокет на той стороне то тут рид так и спит когда закрываю прогрмаау exit(0) то тип-топ и рид рвётся Давайте, пацанчики, жду ваши домыслы. В крайнем случае буду посылать нулевую структуру.... и тогда уж 100% реад не пропустит |
| Автор: hente 14.11.2009, 12:27 | ||
чота как-то похабно прозвучало:
Вам не кажется? |
| Автор: exceilence 14.11.2009, 14:25 |
| да, хорошо подмечено. Но как говорят, "хоть горшком назови, только в рот не бомби". То есть суть остаётся. Не цепляйтесь к словам. После хентая всё кажется похабным, не так ли, hente. |
| Автор: exceilence 14.11.2009, 22:14 |
| про проверку ссылок на сокет... если клиент отключится, то сервак с ридом будет ССылаться. Он ведь не закрывал. Подумав тут я предположу, что при проверке количества некая функция проверит есть ли ссылающийся на локальной машине и потом "пропингует" как-то удалённого. Или при разрыве уже будет знать система количество ссылающихся. Вобщем если ссылаюсь только я то тогда надо рид оброубать. В итоге надо пускать ещё тред-проверщик количества ссылающихся!!!!!!!! Я думаю что за много лет для этой цели уже есть сигнал на подобии SIGPIPE. ----------------------- PS Я это дело замутил на посылая обнулённое сообщение. Товарищ мне сказал, что так делают в нормальных программах (моя, естественно, делается таковой). |
| Автор: MAKCim 14.11.2009, 22:38 | ||
| exceilence, прочитай что-нибудь по сетям в общем ;) я уже в предыдущем топике писАл, что при нормальных условиях read() не может блокироваться, если соединение закрыли с другой стороны Добавлено через 1 минуту и 2 секунды
бред |
| Автор: exceilence 14.11.2009, 23:08 | ||
после слова "бред" как-то настроение подгадилось
он СНАЧАЛА блокируется, а потом уже закрывают сокет за бугром. Вобщем новым тредом проверять число ссылающихся на дескриптор сокета........... пока только такой небредовый вариант. Ладно погоняю лысого, если дойдут руки сделать без посылки обнуленного сообщения, то напишу |
| Автор: MAKCim 14.11.2009, 23:35 | ||
слушай, тебе подробно объяснить, как происходит разблокрование read()? в общем учить матчасть! уж извини, но это правда |