![]() |
jabber - проблема с пакетами
появилось желание реализовать простой jabber клиент на perl'e.
использовать Net::XMPP и подобние я нехочу.., все делаю через IO::Socket; т.е. сам составляю пакети.. коннект (тут проблеми нету) : Код:
my $sock = new IO::Socket::INET(Код:
print $sock "<?xml version='1.0' encoding='UTF-8'?><stream:stream to='jabber.ru' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' xml:lang='ru' version='1.0'>";если отправляю: ....n='1.0'> тогда нету ответа от сервера если отправляю: ....n='1.0'/> тогда ответ примерно такой: Код:
<?xml version='1.0'?>Код:
print $sock "<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='DIGEST-MD5'/>";/>, \n, все что хочеш.., ответа нету =/ помогите пожалуйста, кто знает в чем моя проблемма) p.s.: http://xmpp.org/ читал, через wireshark перехватил пакети. уже смотрел XML консоль в QIP'e. http://forum.jrudevels.org/viewtopic.php?p=12853 p.p.s.: вот что я перехватил с помощью wireshark (пакети QIP'а): (зелений цвет - ответ сервера, красний цвет - пакет qip'а) http://s53.radikal.ru/i139/0902/87/811ab577c40at.jpg первий пакет успешно отправляю (только конец пакета: "../>", а не "..>") ответ после первого тоже получаю, такой что нужно. второй пакет отправляю, а ответа нету =\ |
eLWAux Вся проблема в том как раз, что ты сразу закрываешь соединение с jabber сервером.
<stream:stream to='jabber.ru' ..... [b]/[b]> Эквивалентно <stream:stream .... ></stream:stream> Т.е. Сервер отвечает на начальный пакет, и видя закрытие тэга stream:stream - закрывает соединение Запусти wireshark и такой скрипт PHP код:
Проблема по сути - как получать ответ от сервера. Не зная перл могу предположить, что конструкция while ($input = <$sock>) - будет ждать закрытия сокета и только тогда выведет результат |
Цитата:
|
| Время: 17:47 |