Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.13;
Скачать: CL | DM;

Вниз

Здравствуйте!   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.024 c
2-1213618244
Муслик
2008-06-16 16:10
2008.07.13
Текст из файла


11-1172423656
Vladimir Kladov
2007-02-25 20:14
2008.07.13
Версия 2.54


15-1211877821
Хохол
2008-05-27 12:43
2008.07.13
Как получить размер памяти занимаемый объектом?


2-1213435120
Kaer
2008-06-14 13:18
2008.07.13
Как избавиться от "Out of memory"?


15-1211815645
Tualatin
2008-05-26 19:27
2008.07.13
файл ресурса (где картинки jpg)