Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
C/C++
(Модератор:
Вад
) > Тема:
socket select deadlock
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: socket select deadlock (Прочитано 9109 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
pegucka
Интересующийся
Offline
socket select deadlock
«
:
02-05-2014 07:26 »
Здравствуйте.
Разрабатывая сетевое приложение на c++ столкнулся со следующей проблемой - приложение повисает на функции select до завершения таймаута. Таймаут по словию - 2 минуты. Сокет используется локальный, т. е. общение идёт с приложением на той же машине. С передающей стороной так же всё в порядке проверял с помощью Wireshark - пакеты уходят. Не подскажите в чём может быть проблема?
Записан
Dimka
Деятель
Команда клуба
Offline
Пол:
Re: socket select deadlock
«
Ответ #1 :
02-05-2014 07:34 »
pegucka
, покажи куски кода, в которых ты делаешь сетевую пересылку данных, с обеих сторон соединения.
Записан
Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
pegucka
Интересующийся
Offline
Re: socket select deadlock
«
Ответ #2 :
02-05-2014 08:45 »
Я точно не знаю, могу ли я выкладывать куски кода
. Да и проблема не настолько очевидная потому как воспроизводится один-два раза в сутки и далеко не на всех машинах. По этому был бы длагодарен за общую информацию
Записан
Dimka
Деятель
Команда клуба
Offline
Пол:
Re: socket select deadlock
«
Ответ #3 :
02-05-2014 08:55 »
pegucka
, ну ты же можешь вырезать из кусков кода всё, не относящееся к делу?
Если баг редкий и плавающий, общей информацией тут не отделаться. Почему ты уверен, что причина в select?
Записан
Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Dimka
Деятель
Команда клуба
Offline
Пол:
Re: socket select deadlock
«
Ответ #4 :
02-05-2014 09:09 »
pegucka
, ожидание возможно на длительной операции, в локальной системе причина длительной операции одна: либо буфер пуст, и ждёт чтение, либо буфер переполнен, и ждёт запись. Т.е. так или иначе нужно смотреть, какие из концов сетевых соединений перестают работать, и синхронные операции подвисают. select тут лишь - симптом, а не причина.
Записан
Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
RXL
Технический
Администратор
Offline
Пол:
Re: socket select deadlock
«
Ответ #5 :
06-05-2014 09:37 »
Либо опечатка в программе, либо логическая ошибка. Функция select проста как пень. Рекомендую внимательно пройтись глазами по программе.
Записан
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
pegucka
Интересующийся
Offline
Re: socket select deadlock
«
Ответ #6 :
12-05-2014 12:08 »
Переписал метод приёма сообщений, заменив select на poll. Тот же результат - раз в несколько дней повисает на 2 минуты, как будто данные не получены. Хотя Wireshark показывает, что всё приходит. OS - RHEL5.4
Записан
pegucka
Интересующийся
Offline
Re: socket select deadlock
«
Ответ #7 :
13-05-2014 12:38 »
А будет ли select отрабатывать корректно, если данные стали готовы для чтения до его вызова?
Записан
darkelf
Молодой специалист
Offline
Re: socket select deadlock
«
Ответ #8 :
13-05-2014 13:09 »
Цитата: pegucka от 13-05-2014 12:38
А будет ли select отрабатывать корректно, если данные стали готовы для чтения до его вызова?
Да, должен отрабатывать нормально.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
C/C++
(Модератор:
Вад
) > Тема:
socket select deadlock
Загружается...