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

C#tcp套接字如何判断发送的对象类型?,c#,.net,sockets,tcp,C#,.net,Sockets,Tcp,如果服务器端代码如下所示,如何判断通过套接字发送的对象类型 NetworkStream stream = socket.GetStream(); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream,objectToBeSent); 您可以知道正在发送的对象类型的唯一方法是,消息中是否发送了一些元数据来指示它是什么。两个端点都应该知道序列化模式,

如果服务器端代码如下所示,如何判断通过套接字发送的对象类型

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

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

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

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

object sentObject = formatter.Deserialize(stream);
Type objectType = sentObject.GetType();
为了实现这一点,您显然需要在客户机上包含包含序列化类型的程序集


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

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

object sentObject = formatter.Deserialize(stream);
Type objectType = sentObject.GetType();
为了实现这一点,您显然需要在客户机上包含包含序列化类型的程序集


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

感谢大家的快速回复。我想我会看看这是否有效。@user1216963,别忘了在客户端引用包含该类型的程序集。谢谢大家的快速回复。我想我会看看这是否有效。@user1216963,别忘了在客户机上引用包含该类型的程序集。