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

标签 c# tcp protocol-buffers protobuf-net

我正在编写一个使用 Protocol Buffer 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
    }
}

P.S 抱歉我的英语不好。

最佳答案

有一个 Serializer.NonGeneric 方法可以用来识别对象。看这个问答How can I send multiple types of objects across Protobuf?

关于c# - 如何通过 TCP 和 protobuf-net 接收包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22079042/

相关文章:

networking - 当我使用 TCP 连接时,我应该发送 Keep alive 数据包吗?

java - Java InputStream 到 OutputStream 的非阻塞回显

java - 获取 Protocol Buffer 中的字段描述符

c# - 以最佳性能过滤 CosmosDB 查询中的数组项

c# - 在C#中将lambda函数作为命名参数传递

Java 和 TCP 消息 - 每次在不同端口发送的消息

c# - protobuf-net 如何序列化 DateTime?

protocol-buffers - Protocol Buffer - 用例

c# - C# 窗口中的 C++ opencv 应用程序

c# - LINQ+Lambda 与标准索引器+foreach - 即使 MS 和 Lippert 也说索引器更好。那么在这种情况下呢?