zoukankan      html  css  js  c++  java
  • c#网络通信框架networkcomms内核解析之一 消息传送2

    networkcomms.net 来自英国的网络通信框架 官方网址 www.networkcomms.net 中文网址www.networkcomms.cn

    在网络通信程序中,本地的类或者对象,要传输到通信的另一端,在网络上传输的时候是二进制流的形式。

    那么在发送消息的时候要把对象序列化为二进制流

    对方接收到二进制数据流要还原成对象。

    我们知道使用Tcp协议传输消息的时候有消息边界问题,要解决这个问题,方法有很多,比如:

    (1)固定尺寸的消息

     (2) 使用消息尺寸信息

     (3) 使用消息标记

    我们看一下networkComms通信框架中是如何解决消息边界问题的,用一张图来说明:

      

    NetworkComms框架在把Packet对象序列化二进制数据时

    如上图 ,第一个字节存放 PacketHeader的长度,接收端根据第一个字节存放的数据包包头长度,解析出数据包包头,然后根据数据包包头中含有的数据部分的长度,解析出数据部分。

    消息序列化二进制数据流时,需要使用序列化器,networkcomms框架默认使用网上流行的protobuf.net 序列化器。当然您也可以使用.net自带的 

    BinaryFormatter进行序列化,或者其他的序列化器,只要您在序列化的时候指定一下序列化器即可

  • 相关阅读:
    HashTable、HashSet和Dictionary的区别
    CCF_ 201312-3_最大的矩形
    CCF_ 201312-2_ISBN号码
    CCF_201312-1_出现次数最多的数
    CCF_ 201509-2_日期计算
    CCF_ 201512-3_画图
    CCF_ 201512-2_消除类游戏
    CCF_ 201409-2_画图
    CCF_201409-1_相邻数对
    CCF_ 201412-1_门禁系统
  • 原文地址:https://www.cnblogs.com/Jeely/p/10972335.html
Copyright © 2011-2022 走看看