>> это ведь не просто мусор? нет конечно, это rtf-текст твоего сообщения, упакованный gzip и закодированный base64.. прочитай в описании пакетов про MRIM_CS_MESSAGE: http://digimortal.0x48k.cc/articlz/mrim-packets.txt
вы МАгентом пользовались хоть раз? там можно пересылать отформатированный в формате rtf текст (фон цветной, шрифт ит.д.) - это я думаю вам нафик не надо, если конечно вы свой мрим-клиент не собрались писать.. )
вот дампы пакетов: мой: серва версия протокола это именно 0D 00 01 00 так почему они различаются? неужели мэил уже успели изменить протокол?
ну да, а что в этом удивительного? в МАгенте постоянно появляются новые возможности, а следовательно и новые версии протокола появляются..
ну всё равно как - то... для меня немног времени прошло, а уже на три еденички протокол поменяли всмысле три раза я думаю мэилпрото не станет таким как асику. тоесть не будет делать так, что клиенты работающие по старому протоколу, не смогут дажо залогинитсо.
хм, строю пакет, вот дамп не могу понять почему не доходит. если поставить NORECV (04 00 00 00), мессага прекрасно идёт, а если rtf, то не доходит. плюс нету потвержения. помогите и кста, если не трудно, преведите пример потверждения получения мессаги. никак не могу понять как он строитсо
ну, чтоб ставить флаг rtf, надо саму rtf-часть наверно в сообщение вкладывать.. а зачем тебе это? поставь просто в значение флага 0.. а собрать пакет для подтверждения очень просто: Code: sub message_recv { my ($from, $msg_id) = @_; my $data = pack ("L", length($from)) . $from . pack ("L", $msg_id); print $sock make_mrim_packet( $MRIM_CS_MESSAGE_RECV, $data); $seq_real++; }
хех, если бы всё так просто просто не так выразился, я имел ввиду дамп а не сабу. сорри. тут вот в чём вопрос: from - это мыло отправителя или его айпи? msg_id - это seq пакета с мессаджем котороый пришёл? вот это у мну и составило проблему.
>> from - это мыло отправителя или его айпи? мыло конечно.. >> msg_id - это seq пакета с мессаджем котороый пришёл? нет.. это поле msg_id в данных пакета..
хммм, вот посмотри какой пакет потверждения получился: а пакет мессажа вот так выглядит но он ничего не потверждает( не могу понять
ты должен отпраялять не тот seq, что в заголовке MRIM_CS_MESSAGE_ACK, а тот что в msg_id этого пакета.. у тебя он равен C3 00 00 00 .. а ты отправляешь 03 00 00 00 .. (это я, наверно, своим предыдущим ответом немного сбил тебя с толку - msg_id отпраляется не тот что получает получатель сообщения, а тот, что передает отправитель.. )
вот смотрел старые скрипты. много думал. наткнулся на скрипты свзяаные с мэил агентом. вспомнил)) и вот значит вспомнил что хотел бота написать. тока думал как же сделать посылку этого гадостного пинга (пакет уходящий каждые 30 секунд). додумался. и забыл. а сейчас вспомнил. значит можно просто использовать потоки(модуль threads). то есть запускаем бота. и выделяем отдельный поток, который будет слать пинг, а затем спать 30 секунд. вот вообщем то и все. написал потому, что в определённый момнет это составило для мну проблему. надеюсь что кому то помогу.
у меня в черновом варианте кода, рядом с функцией пинга комментарий даже стоит: типа, запустить отдельный тред и пинговать из него... )
Вообще не в тему. Если раскрыть глаза и вчитаться в пост то там написано - http://digimortal.0x48k.cc/articlz/mrim-packets.txt - отредактированное мной описание пакетов. Я и хотел бы посматреть, что именно автор там писал, может чего-нибудь новенькое или поподробней.
да ниче особо нового там не было.. я тока написал немного своих наблюдений по некоторым пакетам, добавил описания пакетов, необходимых для отправки смс, написал кое-какие идеи по этому поводу, и привел это все в более удобный (по моему мнению) вид.. сорри, но у меня щас нету возможности выложить тот файл..