Сервер, Обнаруживает сериализованную структуру в массиве байтов

#c# #serialization #server #deserialization #bytestream

Вопрос:

я сделал сериализацию пакетов на сервере. Проблема в следующем: если я отправлю на сервер один простой сериализованный пакет с той же структурой

 //Client Side PacketData p = new PacketData(); p.Command = (uint)PacketHeader.HeaderCommand.ACT_LOGIN; p.Argument1 = username; p.Argument2 = password;  byte[] data = p.Serialize(); ns.write(data,0,data.Lenght);  //Server Side byte[] data = new byte[100]; int byteres = clientStream.Read(data, 0, data.Length);     //---After deserialized bytes in Server, i Check whit  if(log.Command == 0x14) { /*Login operation and return single byte for true or false*/ }  

Если я отправлю стандартные данные пакета, не возникнет никаких проблем с десериализацией и извлечением структуры. Но если я хочу сериализовать и отправить структуру другого типа, например

  StackPacket sp = new StackPacket(); sp.Command = (uint)0x22; //Add row in database sp.ip = ip; sp.data = datastring; sp.isEnabled = true; sp.Banned = false; //ecc. ecc.  //this packet is totally different from PacketData.   

Как проверить, какую структуру отправил сериализованный клиент? Всегда происходит сбой, потому что тип десериализации не соответствует структуре, сериализованной в байтах. нужно знать, какая структура сериализуется.

(Извините за мой плохой английский)