如何通过 TCP 和 protobuf-net 接收包
Posted
技术标签:
【中文标题】如何通过 TCP 和 protobuf-net 接收包【英文标题】:How to receive packages via TCP and protobuf-net 【发布时间】:2014-02-27 19:57:05 【问题描述】:我正在编写一个使用协议缓冲区 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 对不起我的英语不好。
【问题讨论】:
【参考方案1】:有一个 Serializer.NonGeneric 方法可用于识别对象。看这个问答How can I send multiple types of objects across Protobuf?
【讨论】:
以上是关于如何通过 TCP 和 protobuf-net 接收包的主要内容,如果未能解决你的问题,请参考以下文章
我可以为 protobuf-net WCF 使用 net.tcp 绑定吗?
Protobuf-Net:实现服务器、rpc 控制器和 rpc 通道
如何以编程方式确定类型是不是可以通过 protobuf-net 本地序列化?