| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Блокирующие сокеты |
| Автор: Linco 22.12.2005, 16:43 | ||||
| Здравствуйте! Значит имеется следующая ситуация, есть необходимость в создании клиента и сервера, которые должны работать в режиме запрос-ответ т.е. Клиент: запрос Сервер: выбор из БД, ответ Клиент: обработка данных, ответ новыми данными Сервер: добавление данных в БД, закрытие Я не специалист в перле в итоге родилось нечто следующее: сервер:
Клиент:
если есть сервер останавливается на if ($_ = 'stats') Я так понимаю что срабатывает блокировка, и почему-то даже посланная 'stats' до сервера не доходит. Как это обойти не представляю. Пробовад и с Select и c FORK но видимо не так пробовал. Клиент будет один и обмен данными будет строго последовательный так что не представляю почему он блокирует оба конца может подскажет кто? |
| Автор: stan777 12.4.2007, 10:44 |
| Blocking => 0, # This line is very important Как написано в спане это вроде должно отключить блокировку сокета. Хотя сам еще не пытался вот только пробую. |
| Автор: KSURi 12.4.2007, 12:22 | ||||
| Не понимаю при чем тут Nonblocking? Когда ты делаешь recv у сокета, он "блокируется", те управление в основную программу не возвращается, пока туда не придёт хотя-бы 1 байт. А неблокирующий режим позволят не ждать завершения операции, те управление сразу вернётся в главную программу. Тоже самое относится к вызовам send, write и тд. Добавлено через 14 минут и 20 секунд c.pl:
s.pl:
|
| Автор: stan777 12.4.2007, 17:02 | ||
Ну как бы и не причем, притом что у него один клиент к серверу конектится |