#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.
Как проверить, какую структуру отправил сериализованный клиент? Всегда происходит сбой, потому что тип десериализации не соответствует структуре, сериализованной в байтах. нужно знать, какая структура сериализуется.
(Извините за мой плохой английский)