Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 22.11.2008, 21:47
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 3  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Знакомый исходник.
Ну, по LocalConnection больше 40960 байт не передашь.
А чтоб не резалось можно делать так:
Код:
int writeAMFString(char * str, int pos, char* buffer){
	WORD len = (WORD)strlen(str);
	buffer[pos++] = 0x02;
     // Согласно спецификации AMF 0x02 означает строковый тип передаваемых данных
	buffer[pos++] = HIBYTE(len);
	buffer[pos++] = LOBYTE(len);
	lstrcpy((char*)&buffer[pos], str);
	pos += len;
	return pos;
}
Код:
int getInfo(char* item, char* buffer, int pos)
{
	WORD* llen;
	char lenbuf[2];
	lenbuf[0]=buffer[pos];
	lenbuf[1]=buffer[pos-1];
	llen=(WORD*)&lenbuf[0];
	memcpy(item, &buffer[pos+1], *llen);
	item[*llen] = 0;
	pos += 1+(int)*llen+2;
	return pos;
}
int readMessage(char* buffer)
{	
	int res = 0;
	DWORD* timestamp = (DWORD*)&buffer[8];
	DWORD *size = (DWORD*)&buffer[12];
   // если размер нулевой - значит либо сообщение уже прочитано, либо некорректно отправлено, скажем, на несущ. коннект
	if (!(*size))return res;
   // имена метода(method), домена(domain), соединения(dest) и сообщение (msg). 
	char msg[40960];
	char dest[256];
	char method[256];
	char domain[256];

	int index = 16+2;
	index = getInfo((char*)&dest, buffer, index);
	index = getInfo((char*)&domain, buffer, index);
	index = getInfo((char*)&method, buffer, index);
	index = getInfo((char*)&msg, buffer, index);

       // buffer содержит начальный адрес расшаренной через FileMapping памяти
       // разобрали буфер, дальше идут действия на 
       //оcнове  полученной инфы, res будет каким-то ...
       // ...
       return res;
}
readMessage можно допилить, оснастив динамическим выделением памяти, или работать прямо с буфером по индексам.
А работает LC по протоколу AMF.


Последний раз редактировалось alexcon314; 23.11.2008 в 22:18.
Создать новую тему   Часовой пояс GMT +4, время: 18:12.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:12.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.