我正在编写一个使用协议缓冲区C#的应用程序。 我需要一些如何通过TCP发送和接收数据的示例。 特别是,如何确定哪种类型的包裹已到达。 我有课程:
[ProtoContract]
class Package1
{
//fields
}
[ProtoContract]
class Package2
{
//fields
}
以及写入流的方法
private static void SendPackage(Stream stream, Package1 package)
{
Serializer.Serialize<Package1>(stream, package);
}
private static void SendPackage(Stream stream, Package2 package)
{
Serializer.Serialize<Package2>(stream, package);
}
现在,如何确定哪种类型的包已到达?
using (NetworkStream stream = client.GetStream())
{
switch(packageType)
{
//deserialize package
}
}
对不起我的英语不好。
答案 0 :(得分:1)
有一个Serializer.NonGeneric方法,您可以使用它来识别对象。请参阅此问题并回答How can I send multiple types of objects across Protobuf?