Итак продолжим! После отпраки серверу пакета, который содержит метод авторизации (дигест мд5), мне приходит ответ в басе64, раскодировываю и получаю значение nonce. Я теперь должен отправить пакет который будет содержать: username='jid', realm = 'jabber.ru', nonce=123123123132', cnonce='????????', nc=0000001, qop=auth, digest-uri='xmpp/jabber.ru', charset=utf-8,response=!!!!!!!!! Итак, что жея хотел спросить. nonce Эт понятно, оно у нас уже есть,а вот что писать в поле cnonce? В документации сказано что этоуникальный код ответной клинтской сессии, сгенерированный клиентом.... Как понимать не знаю. Про response молчу. И еще, мне кажется вайл тут неочень.. может фор? Потомут что я хочу сделать отдельно авторизацию и отделюно прослушку ответов... А вообше мне кажется моя идея очень замечательная т.к. бот будет на пхп а не на питоне, то даст возможность запускать его на хостингах а не на серваках. Потому что иметь сервак и знать как с ним управится не каждый может, а вот оплатить хостинг и залить на него бота - почти каждый)
Krist_ALL Читайте RFC2831. Например тут: http://www.faqs.org/rfcs/rfc2831.html И собственно rfc3920bis. Все вопросы отпадут сами собой cnonce - это любая строка, например можно использовать MD5 от текущего времени. А response - функция от всех этих параметров З.Ы, если вы думаете, что PHP класс для джаббера никто до этого не придумал - вы ошибаетесь (например XMPPHP, jabberPHP) З.Ы.Ы, Зачем выдумывать лисапед (это к вашей фразе о циклах)? Вы как раз вернетесь к тому же, с чего начали - почему вам не приходят все ответы
Я знаю про php класс. Я об этом писал в начале темы. Я пишу простой код - простой всмысле понятный. и признаться не знаю классы и хочу написть не исползуя классы. Пасибо за ссылку на ртфм.
Хотелось бы попдробнее чтоб кто-нибудь прокоментировал данный кусок кода PHP: while (1) { $read=array($socket); $count=socket_select($read,$write=null,$exception=null,1); // Если ничего не пришло пропускаем // Или если нужно что то послать по собственному желанию - отправляем if ($i++ > 10) break; // Соединение оборвется через 5 секунд или 5 принятых пакетов if ($count<1) continue; Почему вместо if ($i++ > 10) break; не сделать фор и=0; и<10? Почему через 5 пакетов а не 10? Ведь if ($i++ > 10)
Krist_ALL Я просто не правил комментарий, да, там 10 пакетов будет. Этот бряк по сути нужен, только для отладки приложения. Потому что еще нет условий, по которому надо выходить из цикла. Когда скрипт дорастет до того, что будет проверять большую часть исключений (ака соединение разорвано, пришел пакет '</stream:stream>' и прочие), тогда от этой строки можно будет избавиться.
Если не бреак то тада цикл будет бесконечным и зависнет) Как же хочется фор для авторизации а потом вайл для приема сообщений.
Krist_ALL Еще раз вопрос - зачем? У тебя получится два АБСОЛЮТНО одинаковых цикла, просто в одном будешь обрабатывать одно, во втором - другое. Еще раз - когда цикл будет обрабатывать все исключения - цикл будут прерывать эти самые обработчики исключений.