Программинг  Форум для тем связанных с программированием  
	
	
	
	
		
		 
	
	
	
	
	 
 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#1  
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 27.10.2011
				Адрес: Харьков
				
				
					Сообщений: 106
				
				 
	Сказал Спасибо: 24
	
		
			
				Имеет 11 спасибок в 7 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
				разбор пакетов 
			 
			кто как реализует разбор пакетов?
мне пока что в голову ничего лучше не приходит (кусок исходника джава сервера):
	Код:
	switch (opcode)
				{
					case 0x00:
						msg = new Logout();
						break;
                    case 0x0c:
                        msg = new CharacterCreate();
                        break;
                    case 0x0d:
                        msg = new CharacterDelete();
                        break;
                    case 0x12:
                        msg = new CharacterSelect();
                        break;
                    case 0x13:
                        msg = new NewCharacter();
                        break;
                                } 
 
				__________________
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#2  
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 07.03.2009
				
				
				
					Сообщений: 9,139
				
				 
	Сказал Спасибо: 70
	
		
			
				Имеет 2,820 спасибок в 1,735 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			ну разве что чтото вроде
	delphi Код:
	type  
  TParserFunc = procedure  .....
var 
  OpcodesFuncs : array[0 ..$ff] of  TParserFunc;
 гдето:
	delphi Код:
	OpcodesFuncs[0 ] := @Parse_Die;
........
OpcodesFuncs [$DA] := @Parse_exPackets;
........
 гдето вместо кейса:
	delphi Код:
	OpcodesFuncs[packet.opcode ]( ) ;
 
не си но идея понятна.
				__________________
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	
		
			
				
					За это сообщение alexteam нажился 3 спасибками от: 
				
				
				
			 
			 
	
  
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#3  
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 27.10.2011
				Адрес: Харьков
				
				
					Сообщений: 106
				
				 
	Сказал Спасибо: 24
	
		
			
				Имеет 11 спасибок в 7 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			с разбором пакетов по ID разобрался.
		
	
		
		
		
		
		
		
			
				__________________
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#4  
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 23.09.2009
				
				
				
					Сообщений: 1,232
				
				 
	Сказал Спасибо: 119
	
		
			
				Имеет 172 спасибок в 134 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			Elecktron , формат надо знать, насчёт имён и титулов - это PWideChar так что в конце 00 00
		
	
		
		
		
		
		
		
			
				__________________Н а ч а л о . 
		
		
		
		
		
		
		
						
				Последний раз редактировалось supernewbie, 10.01.2012 в 16:45 .
				
				 
			
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#5  
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 27.10.2011
				Адрес: Харьков
				
				
					Сообщений: 106
				
				 
	Сказал Спасибо: 24
	
		
			
				Имеет 11 спасибок в 7 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			спасибо за ответ.
то что ник и титул widechar я вкурсе.
формат пакетов есть.
в лог я записываю вот так:
	Код:
	   for (int i=0;i<packet->size;i++)
   {
    wsprintfA(buf, "%x",packet->data[i]);
    stf(buf);
    stf(" ");
   } 
 но это весь пакет...
а мне нужно распределять по переменным, с которыми я буду уже работать.
пакет это массив, а переменные не массивы, и как это совместить я немогу понять...
				__________________
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#6  
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 23.09.2009
				
				
				
					Сообщений: 1,232
				
				 
	Сказал Спасибо: 119
	
		
			
				Имеет 172 спасибок в 134 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			ну как епт, перемещением памяти в переменные
		
	
		
		
		
		
		
		
			
				__________________Н а ч а л о . 
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#7  
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 27.10.2011
				Адрес: Харьков
				
				
					Сообщений: 106
				
				 
	Сказал Спасибо: 24
	
		
			
				Имеет 11 спасибок в 7 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			memcpy() копирует массив в массив.
		
	
		
		
		
		
		
		
			
				__________________
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#8  
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 07.03.2009
				
				
				
					Сообщений: 9,139
				
				 
	Сказал Спасибо: 70
	
		
			
				Имеет 2,820 спасибок в 1,735 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			
	Цитата:
	
	
		
			
				memcpy() копирует массив в массив.
			
		 
	 
	
 колво байтиков которые нужно скопировать указать нельзя чтоле ? да и не масив в масив, а кусок данных.
	Цитата:
	
	
		
			
				а мне нужно кусок массива в DWORD например..
			
		 
	 
	
 и ? 4 байтика скопировать ? в чем трабл ?
	Цитата:
	
	
		
			
				или кусок массива в widestring
			
		 
	 
	
 перебираем массив парами (word)
пока не наткнемся на 0. считаем колво.
алокейтим строку, копируем байтики.
	Цитата:
	
	
		
			
				ник/титул добивается нулями до длины 16/32 байта.
			
		 
	 
	
 пох на длину вайдстринга в пакете.
тебе нужна пара нулей. (выше писали)
				__________________
		
		
		
		
		
		
		
						
				Последний раз редактировалось alexteam, 11.01.2012 в 03:07 .
				
				 
			
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#9  
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 23.09.2009
				
				
				
					Сообщений: 1,232
				
				 
	Сказал Спасибо: 119
	
		
			
				Имеет 172 спасибок в 134 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			
	Цитата:
	
	
		
			
				
					Сообщение от 
alexteam 
					перебираем массив парами (word)
			
		 
	 
	
 кстати додумался как круче делать - string(pchar(@pck[байт с которого идёт строка]));
кто-нить видит подводные камни?
				__________________Н а ч а л о . 
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#10  
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 27.10.2011
				Адрес: Харьков
				
				
					Сообщений: 106
				
				 
	Сказал Спасибо: 24
	
		
			
				Имеет 11 спасибок в 7 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			
	Цитата:
	
	
		
			
				колво байтиков которые нужно скопировать указать нельзя чтоле ? да и не масив в масив, а кусок данных.
			
		 
	 
	
 про количество я вкурсе. я не понял как вытащить кусок не сначала, например с пятого по восьмой..
	Цитата:
	
	
		
			
				перебираем массив парами (word) 
	 
	
 ок. попробую..
				__________________
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
		
 
	
		
 
  
	Опции темы 
	
 
	
	
	
	
	
	
	 
	
 
	Опции просмотра 
	
 
	
	
	
	
	
	
		Линейный вид  
	
	
	
	 
	
	
 
	
		
	
		 
 
 
	
		
		Вы не можете  создавать темы
		Вы не можете  отвечать на сообщения
		Вы не можете  прикреплять файлы
		Вы не можете  редактировать сообщения
		HTML код Выкл. 
	  
 
	 
	
		
	 
 
Часовой пояс GMT +4, время: 05:24 .
		 	
	 
 
	
	
	
	vBulletin style designed by 
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: 
zCarot 
	
 
 
 
 
Вы хотите чувствовать себя в безопасности? чоп  Белган обеспечит её!