如何在 c++ 和 java 之间通过 udp 有效地发送数据数组

How to send efficiently a data array over udp between c++ and java

本文关键字:有效地 udp 数组 数据 c++ 之间 java      更新时间:2023-10-16

我将通过udp套接字发送一个双数组。我在Clinet端使用C ++中的Winsock库,在服务器端使用java。我目前的想法是用这个双精度数字数据制作一个字符串并发送。但是我觉得这不合适,需要将两侧转换为数值。如何更有效地发送此数据?

我尝试了以下方法,但收到错误"类型为"双*"的参数与 sendto(( 函数中"const char *"类型的参数不兼容"

double arrayTosend[100] 
int sendOk = sendto(out, arrayToSend, sizeof(arrayToSend), 0, (sockaddr*)&server, sizeof(server));

我建议你使用谷歌的协议缓冲区来处理数组的传输:

  • 它是在远程进程和内部进程之间序列化/反序列化消息的可靠机制。
  • 它易于使用和学习。
  • 它将生成在 c++ 和 java 进程上获取和接收数组所需的代码。
  • 如果将数组更改为其他类型,或决定传输其他信息 - 协议缓冲区使用的消息格式将允许您轻松更改传输的数据,并将重新生成所有必需的样板代码。