所以我有基本的 UDP 服务器,我已经实现了一些东西,比如恢复字节数组完全是客户端发送的方式(如果它被无序检索)。基本上,我有客户端、服务器和具有类型的共享类库,其对象可以从客户端发送到服务器,反之亦然。所以现在我想到了序列化一些对象并发送到服务器/客户端的想法。但我需要知道收到了什么类型的对象才能正确反序列化它。为了解决这个问题,我想到了两个想法:
- 做一个“握手”。发送有关将要发送的对象、其长度、类名等的数据。在它检索实际数据并对其进行反序列化之后。我知道这样做,但是由于它是 UDP,因此这种“握手”可能会丢失,我需要重新询问它,因此逻辑和网络过度使用非常复杂,但我知道如何实现这一点。
- 第二个是通过一些哈希值来识别类型。所以客户端发送的数据包含类型和数据的哈希值(我只会发送我自己的类型的对象,所以不需要为 C# 和框架类型实现这个),我需要通过这个哈希值来确定类型,服务器可以适当地解开它。
那么有什么想法,如何实现呢?如果我设法避免反射,那将是完美的,因为它很慢(如果它工作得更快,我不在乎巨大的 switch 语句)