代码之家  ›  专栏  ›  技术社区  ›  Paul Farry

通过TCP/IP在机器之间传输二进制数据时处理64位/32位的策略

  •  0
  • Paul Farry  · 技术社区  · 16 年前

    我知道我“可以”使用序列化,但这会给传输增加很多额外的数据,因为这些传输可以跨VPN等传输,所以决定不使用纯.Net序列化,因为会增加额外的开销。

    因此,在执行此过程时,最好:

    1. 向传输的每个数据块添加1个字节,指定用于在初始端对数据进行编码的位大小
    2. 添加系统间初始握手中使用的1个字节,以指定将用于所有通信的位大小
    3. 不要使用默认数据类型(integer、short等),而是在数据中对它们进行编码,以便传输不依赖于系统不同的数据类型大小。
    1 回复  |  直到 16 年前
        1
  •  1
  •   Michael Petrotta user3140870    16 年前

    .Net保证Int32始终为32位:

    Int32值类型表示有符号的 负2147483648至 正2147483647。

    和 int 只是 an alias 对于 System.Int32 类型Net中的其他值类型(byte、short、long等)也是如此。

    Console.WriteLine(int.MaxValue);
    Console.WriteLine(sizeof(int));
    

    在我的机器上运行,在64位Windows Server 2008下,目标为x64:

    2147483647
    4
    
    推荐文章