【问题标题】:Sending an integer array over UDP in C++在 C++ 中通过 UDP 发送整数数组
【发布时间】:2014-04-29 22:53:34
【问题描述】:

我正在尝试使用 C++ 中的 winsock 编程通过 UDP 将大小为 480X640 的整数数组发送到另一台机器。我可以在发送之前将数组类型转换为 char *,但我不知道如何将 char * 转换回整数数组。代码段如下所示:

int arrayData[480][640];    
char * arrayChar;

arrayChar = (char *)&arrayData;

// send it to the other end over UDP

// at the other end, receive and convert char * to integer array

这种类型转换有效吗?如果有人可以帮助我将 'arrayChar' 转换回整数数组,那就太好了。

【问题讨论】:

    标签: c++ arrays sockets visual-c++ casting


    【解决方案1】:

    答案。

    1. 您不需要 &,最好在 C++ 中使用正确的类型转换。

      char* ptr = static_cast(arrayData);

    2. 有关您需要的演员表,请参阅 (How to cast simple pointer to a multidimensional-array of fixed size?)

    3. 那里有超过 1MB 的数据,这是很多数据包。您确定要使用 UDP,它不能保证数据包按顺序(或根本)到达?

    【讨论】:

    • 此代码段处理实时通信..因此首选 UDP..但我同意您关于丢包的观点..也会尝试 TCP!谢谢..
    【解决方案2】:

    您可以使用reinterpret_cast,然后使用相同的方法将其投射回接收方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 2017-09-27
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多