Форум: "Прочее";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];
ВнизЗдравствуйте! Найти похожие ветки
← →
alex-drob (2008-06-01 12:10) [0]Здравствуйте! У меня такой вопрос. хочу попробывать сделать подобие маил агента. ну изначально хотел для сотового, но на делфи мне проще разобраться. дошол до авторизации пользователя и стал на этом.
Вот описание как это работает.
http://agent.mail.ru/developers/licence.html
том много написанно в кратце то что меня интересует вот:
MMP бинарный протокол. Все числовые данные передаются как четырехбайтные целые НЕ в сетевом формате, т. е. первым идет старший байт, последним младший. Четырехбайтовые беззнаковые целые обозначаются UL.
Текстовые данные передаются с префексированной длиной, т. е. сначала UL, а потом строка (в кодировке windows-1251) длины UL без завершающего нуля. Обозначение в дальнейшем - LPS.
Тип данных UIDL используется только при работе с оставленными на сервере сообщениями. UIDL - последовательность из 8 символов из множества [a-z A-Z 0-9 _ - = +].
Пакет: Авторизация
Имя пакета: MRIM_CS_LOGIN2
Тип пакета: cs
Параметры:
LPS ## login ## email авторизующегося пользователя
LPS ## password ## пароль
UL ## status ## статус (см. MRIM_CS_CHANGE_STATUS)
LPS ## user_agent ## текстовое описание клиента пользователя, например "Mail.Ru Miranda Plugin v 1.0"
есть пример на пхп
$tmp = pack ("l", strlen ($login)).$login.pack("l", strlen ($pass)).$pass."\x22\x10\x00\x00".pack ("l", strlen ($client)).$client;
$packet = "\xEF\xBE\xAD\xDE".//CS_MAGIC
"\x0A\x00\x01\x00".//номер отправляемой команды
"\x03\x10\x00\x00". //тип пакета
"\x38\x10\x00\x00".//номер команды и/или ответа MRIM_CS_LOGIN2
pack ("l", strlen ($tmp)). // Длина данных
"\x00\x00\x00\x00". // Адрес отправителя
"\x00\x00\x00\x00". // Порт отправителя
"\x00\x00\x00\x00".//++++++++++++++++++++
"\x00\x00\x00\x00".//
"\x00\x00\x00\x00".//зарезервиравано
"\x00\x00\x00\x00".//+++++++++++++++++++++
$tmp; //собственно данные
так вот, не могу понять как это в делфи сделать.
← →
alex-drob (2008-06-01 12:10) [1]Прошу прощения, тему не вписал.
← →
Reindeer Moss Eater © (2008-06-01 12:15) [2]формируешь пакет, устанавливаешь тсп соединение, посылаешь и читаешь данные.
если и это непонятно, то рано взялся за задачу.
← →
alex-drob (2008-06-01 12:22) [3]я это понял! два пакета я послал, получил ответы. у меня вопрос как сделать с прикреплёнными данными в конце. когда нужно кроме структуры на сервер чтото отправить. я дошол до этого и всё!
естьtype
mrim_packet_header_t = record
magic: DWORD;
proto: DWORD;
seq: DWORD;
msg: DWORD;
dlen: DWORD;
from: DWORD;
fromport: DWORD;
reserved: Array[0..16-1] of char;
end {mrim_packet_header_t};
const
CS_MAGIC = $DEADBEEF;
var
mph: mrim_packet_header_t;
mph я заполняю
а как теперь к этому сзади добавить данные и как эти вот данные сформировать не могу разобраться.
← →
Reindeer Moss Eater © (2008-06-01 12:31) [4]выделил память нужного размера.
скопировал в начало то что уже у тебя есть. сзади приклеил то что осталось. получился пакет
← →
alex-drob (2008-06-01 12:37) [5]а как вот то что осталось сформировать?
например
логин: alex@mail.ru
пароль: alex
статус: MRIM_CS_LOGIN2 = $1038;
агент: маилагент
так вот, что в результате должно получиться?
← →
Reindeer Moss Eater © (2008-06-01 12:46) [6]у тебя же в описании приведена структура пакета.
← →
alex-drob (2008-06-01 12:57) [7]я понимаю что она там есть! но я не понимаю как это зделать.
всё что мне пришло в голову это создать динамический масив типа byte и туда по символу запихивать всё! но ещё я немогу понять как должно выглядеть четырёхбайтовое число указывающие размер последующих данных?
например для строки alex@mail.ru 12 символов и как это записать?
← →
ketmar © (2008-06-01 12:59) [8]>[7] alex-drob (2008-06-01 12:57:00)
по-моему, ты рановать взялся за что-то сложнее hello, world. тебе не агентов пиать надо, а учить, что такое биты, байты, память, работа с динамической памятью, как это и зачем.
---
Understanding is not required. Only obedience.
← →
alex-drob (2008-06-01 13:02) [9]а я это не отрицаю! но разве если разобраться как должна выгледеть строка, нельзя сделать програмку? я понимаю что это будет не суперпрога!
← →
alex-drob (2008-06-01 13:08) [10]Ну а может подскажите, где можно почитать на эту тему. у меня просто в книге по делфи такого нет. там просто тупо перечислины функции для выделения копирования и освобождения памяти.
← →
ketmar © (2008-06-01 14:49) [11]>[10] alex-drob (2008-06-01 13:08:00)
в учебниках информатики за старшие классы. там рассказывают о битах, байтах и ты пы. или раньше рассказывали…
---
All Your Base Are Belong to Us
← →
alex-drob (2008-06-01 14:53) [12]Учебники информатики разные! и когда я учился у нас небыло вобще учебников! и общепринетой программы по информатике до сих пор нет!
← →
wl © (2008-06-01 16:08) [13]это что, типа тяжелое детство, деревянные игрушки, прибитые к полу?
копировать память можно не только байтами, можно воспользоваться функциями типа CopyMemory(...);
← →
alex-drob (2008-06-01 16:44) [14]да проблема не в детстве! а в образовании в россии. так как нет единой программы по информатике
← →
Ум_ще (2008-06-01 16:50) [15]
> wl © (01.06.08 16:08) [13]
> это что, типа тяжелое детство, деревянные игрушки, прибитые
> к полу?
Не у всех в коляске был деревянный монитор.
← →
ketmar © (2008-06-01 17:31) [16]у кого-нибудь курс ЮЗ сохранился, а? дайте страждущему.
---
Understanding is not required. Only obedience.
← →
Админ (2008-06-02 01:22) [17]На королевстве где-то встречал.
← →
Германн © (2008-06-02 01:40) [18]
> ketmar © (01.06.08 17:31) [16]
>
> у кого-нибудь курс ЮЗ сохранился, а? дайте страждущему.
>
Как таковой курс ЮЗ на ДМ не сохранился. Вроде года 2-3 назад искали.
Но есть уроки в лицее на королевстве. И не только ЮЗ.
http://www.delphikingdom.com/lyceum/seminar.asp
← →
ketmar © (2008-06-02 08:02) [19]>[18] Германн © (2008-06-02 01:40:00)
ну, я Королевство не посещаю. что вспомнил качественного отсюда — то сказал. кстати, я тогда протупил — а сам бы не отказался викифицировать статьи ЮЗ…
---
All Your Base Are Belong to Us
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.007 c