如何通过TCP和protobuf-net接收包

时间:2014-02-27 19:57:05

标签: c# tcp protocol-buffers protobuf-net

我正在编写一个使用协议缓冲区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
    }
}
对不起我的英语不好。

1 个答案:

答案 0 :(得分:1)

有一个Serializer.NonGeneric方法,您可以使用它来识别对象。请参阅此问题并回答How can I send multiple types of objects across Protobuf?