使用protobuf-net +套接字示例C#发送/接收集合

时间:2013-05-26 12:41:16

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

我正在寻找如何使用protobuf-net序列化和套接字连接在两台机器之间传输集合的完整示例。我成功找到的只是代码的各个部分,没有人能像我一样向noob解释如何组合所有这些东西。在.proto文件之后:

using System;
using ProtoBuf;

namespace Proto.Transaction
{    
    [Serializable]
    [ProtoContract]
    public class Transaction
    {
        [ProtoMember(1)]
        public int Type { get; set; }

        [ProtoMember(2)]
        public int AgentID { get; set; }

        [ProtoMember(3)]
        public string TransactionName { get; set; }

        [ProtoMember(4)]
        public string ScriptName { get; set; }

        [ProtoMember(5)]
        public DateTime StartTime { get; set; }

        [ProtoMember(6)]
        public double TransactionLength { get; set; }
    }
}

最后,我必须将它作为Observable Collection接收并将其设置为DataSet(为了将其保存为XML并将其呈现在DataGrid中)。我将非常感谢任何帮助和/或链接到网络中的适当材料。 此致

1 个答案:

答案 0 :(得分:2)

最基本级别,您可以查看QuickStart/3 Sockets.cs下的示例。这里的关键点是如果你在原始套接字级别工作,你需要在消息之间添加某种分区(因为TCP只是一个流)。该示例使用*WithLengthPrefix方法执行此操作。

但是,在许多情况下,您可以使用已经包含消息分区的预卷RPC /消息传递实现;在这种情况下,您需要使用*WithLengthPrefix方法(尽管欢迎您这样做)。