Кто что скажет, с чего начать, куда рыть ?
>Кто что скажет, с чего начать, куда рыть ?
Рой в сторону синхронных!!!
советую!
в свое время реализовывал асинхронные еще на дельфях, не гемор конечно, но логика размазывается по сети состояний, нафига оно нужно? А потом все это все равно нужно сводить к синхронному потоку.
Пишу скрипт для взаимодействия с сервером и в описании протокола вот что написано:
взаимодействие с сервером происходит поверх постоянно установленного tcp-соединения посредством асинхронного обмена командами.Скрипт обменивается данными с сервером(при использовании модуля IO::Socket(тип соединения не указывал)) спокойно, но боюсь эта асинхронность указанная в протоколе ещё всплывёт в процессе написания. МОжет я не правильно что-то понял
>Пишу скрипт для взаимодействия с сервером и в описании протокола вот что
>написано:
>взаимодействие с сервером происходит поверх постоянно установленного tcp-соединения посредством асинхронного обмена командами.
>
>
>Скрипт обменивается данными с сервером(при использовании модуля IO::Socket(тип соединения не указывал)) спокойно,
>но боюсь эта асинхронность указанная в протоколе ещё всплывёт в процессе
>написания. МОжет я не правильно что-то понял ?
>Пишу скрипт для взаимодействия с сервером и в описании протокола вот что
>написано:
>взаимодействие с сервером происходит поверх постоянно установленного tcp-соединения посредством асинхронного обмена командами.
>
>
>Скрипт обменивается данными с сервером(при использовании модуля IO::Socket(тип соединения не указывал)) спокойно,
>но боюсь эта асинхронность указанная в протоколе ещё всплывёт в процессе
>написания. МОжет я не правильно что-то понялКонечно не правильно!!! Асинхронный сокет, выдумка Била гейтса(могу путать, но в винде они сильно распространены), это когда ты объявляешь функции Send, Recive, Close, Connect, открываешь сокет и говоришь операционке: "Если что стукнешь". И вот если что случается операционка по типу события вызывает твои функции. пришел пакет дергает recive, пакет отправился, сообщает что мол все send!
А реальные вызовы функций только дают задание, и неблокируясь возвращают управление программе.
Код обработки простейшей команды размазывается между основной функцией, recive и send, и еще конечный автомат туда приделывается.А то что нужно сделать тебе, это обычные синхронные блокрующиеся сокеты. по которым идет некий не определенный за ранее поток команд, ну поставь функцию комплектации приема(синтаксический анализатор) и парсер команд(лексический анализатор) и все дела.
>Асинхронный сокет, выдумка Била гейтса(могу путать, но в винде
>они сильно распространены), это когда ты объявляешь функции Send, Recive, Close,
>Connect, открываешь сокет и говоришь операционке: "Если что стукнешь". И вот
>если что случается операционка по типу события вызывает твои функции. пришел
>пакет дергает recive, пакет отправился, сообщает что мол все send!
>А реальные вызовы функций только дают задание, и неблокируясь возвращают управление программе.
Вы путаете, это не асинхронный ввод-вывод, это событийная модель.
>Вы путаете, это не асинхронный ввод-вывод, это событийная модель.
Ну может быть немного их смешиваю, неблокирующийся сокет дополнен событиями. теоретически наверное можно и без событий :) но я этого удовольствия не пробовал.
Впрочем, касаемо перла, и желания поработать с неблокирующимися сокетами, вот пожалуйста, (автору вопроса) читайте Линкольн Штайн 13 глава, советую начать с Резюме :)
Благодорю всех за разъяснения, особенно за наводку на Линкольн :)
люди где можно взять почитать Линкольн Д. Штайн?
Хотя бы на англ? Но на русском предпочтительней :)
>люди где можно взять почитать Линкольн Д. Штайн?
>Хотя бы на англ? Но на русском предпочтительней :)Книгу нашел. вот тут можно взять
http://ifolder.ru/1932159
>>люди где можно взять почитать Линкольн Д. Штайн?
>>Хотя бы на англ? Но на русском предпочтительней :)
>
>Книгу нашел. вот тут можно взять
>http://ifolder.ru/1932159
Я предпочитаю бумажный вариант. но спасибо за ссылку.