The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

действие select/read пpи обpыве соединения. (socket select)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: socket, select,  (найти похожие документы)
_ RU.UNIX (2:5077/15.22) _____________________________________________ RU.UNIX _ From : Yar Tikhiy 2:5020/118 17 Jul 99 17:37:34 Subj : действие select/read пpи обpыве соединения. Referat : select read write socket sigpipe ________________________________________________________________________________ Maxim A.Shemanaryov <max@mera.ru> wrote: MAS> Я принял accept, создался новый сокет и теперь MAS> я жду пока мне что-то пришлют. Делаю MAS> как обычно, при помощи select. Hо на том конце MAS> взяли и закрыли соединение, так ничего и не послав. MAS> 1) как я могу об этом узнать? MAS> 2) что вернет select в этом случае? MAS> 3) есть ли переносимый способ получить такой сигнал? См. Unix Programming FAQ и Unix Socket FAQ (ищи на Altavista). Вкратце: select() вылетит и скажет, что из этого сокета можно читать, а read() вернет 0 - признак EOF. SY, Yar --- ifmail v.2.14dev3 * Origin: Chem. Dept. of Moscow State University (2:5020/118) _ RU.UNIX (2:5077/15.22) _____________________________________________ RU.UNIX _ From : Valentin Nechayev 2:5020/400 15 Jul 99 13:50:06 Subj : Sockets & select, соединение поpвалось ________________________________________________________________________________ From: "Valentin Nechayev" <nx@nn.kiev.ua> Reply-To: nx@nn.kiev.ua Hello Vlad Doubrov! At 15-Jul-99 07:53, Vlad Doubrov wrote: > Пришлось мне писать программку-демон для юникса с использованием tcp/ip. > Входящие данные должны обрабатываться в порядке очереди, поэтому все > просто - для каждого сокета заводим fd, помещаем их в список и запускаем > select. Все отлично работает, за исключением одного: когда > подсоединившийся клиент вылетает аварийно (ну например подвисла у него > маздайка), select начинает вести совершнно ненормально. Иногда начинает > возвращать какую-то ересь, а чаще всего программа целиком вылетает с > сообщением broken pipe, что не есть хорошо для демона. Hу, лови SIGPIPE и ставь флаг, что какое-то соединение поpвалось. > В доках по select'у я ничего не нашел про аварийный разрыв соединения. > Так вот, как узнать, разорвано ли соединение, соответветствующее данному > fd? И можно ли это сделать вообще? write()/send() тебе выдаст ECONNRESET или аналог. Если SIGPIPE словишь (или пpоигноpиpуешь). -- NN --- ifmail v.2.14dev3 * Origin: unknown (2:5020/400)

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру