在c++中通过UDP发送整数数组

Sending an integer array over UDP in C++

本文关键字:整数 数组 UDP c++      更新时间:2023-10-16

我试图通过使用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'转换回整数数组,那就太好了。

您可以使用reinterpret_cast,然后在接收端使用相同的方法将其强制转换。

答案

  1. 你不需要&在c++中最好使用正确的强制类型转换。

    char * ptr = static_cast (arrayData);

  2. 对于强制转换,您需要参见(如何将简单指针强制转换为固定大小的多维数组?)

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