C#tcp套接字如何判断发送的对象类型

本文关键字:对象 类型 判断 套接字 何判断 C#tcp | 更新日期: 2023-09-27 18:24:55

如果服务器端代码看起来像,如何判断通过套接字发送的对象类型

        NetworkStream stream = socket.GetStream();
        BinaryFormatter formatter = new BinaryFormatter();
        formatter.Serialize(stream,objectToBeSent);

C#tcp套接字如何判断发送的对象类型

您可以知道要发送的对象类型的唯一方法是在消息中发送一些元数据来指示它是什么。序列化模式应该为两个端点所知,这样每个端点都可以适当地序列化和取消序列化。这是(或者应该是)您为套接字通信定义的协议的一部分。

在客户端上,我想您将读取服务器发送的数据并将其反序列化:

object sentObject = formatter.Deserialize(stream);
Type objectType = sentObject.GetType();

为了实现这一点,您显然需要在客户端上包含包含序列化类型的程序集。

哦,请记住,BinaryFormatter类使用了一种不可互操作的格式。这意味着,例如,如果您在客户端和服务器上使用不同版本的.NET frmaowrk,这可能不起作用。如果是这种情况,您应该使用一些可互操作的数据格式协议在服务器和客户端之间交换信息。