【问题标题】:sending variable of type struct into socket将 struct 类型的变量发送到套接字
【发布时间】:2014-10-21 19:55:17
【问题描述】:

对于一个学习项目,我可以从服务器向客户端发送一个包含员工信息(ID、薪水等)的 struct 类型的变量吗,实际上我不太习惯 C,所以我不太清楚这个概念。或者给我任何想法,我可以以哪种形式在套接字上发送此信息。

【问题讨论】:

  • 至少,您应该向我们展示您的struct employee 声明。如果您想与其他架构交流,您将需要设计(或重用)一个比仅发送字节更高级的序列化机制。我建议您首先决定如何将该信息存储在磁盘上的文件中,然后学习如何通过网络发送相同的表示。最后,为什么选择UDP?传输业务数据似乎不是一个非常合适的选择。
  • 结构员工{ char id[8];国际工资;国际经验;年龄; }; UDP是程序要求,它是一个基于学习的应用程序

标签: c sockets udp


【解决方案1】:

虽然可以传输结构内容,但这很可能会导致问题。

结构对齐因编译器、目标 CPU 和 CPU 版本而异。此外,需要注意每个结构元素的大小,以使其在不同架构中保持一致。

struct s {
     int          a;
     short        b;
     long         c;
     long double  d;
};

虽然大多数工程师都知道int 可能是 16 到 128 位之间的任意值,具体取决于目标架构,但其他字段的大小也可能因目标而异。 long double 在最原始的嵌入式 CPU 上可能等同于 float并且在主流架构上可能是 64、80 或 128 位。

为了解决这些问题,已经发展出一系列解决方案:从完全控制通信链路的两端到将数据转换为 XML 等流格式。

【讨论】:

    猜你喜欢
    • 2021-11-18
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 2013-02-16
    • 2019-09-01
    相关资源
    最近更新 更多