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

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

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

我尝试了以下但收到错误 "argument of type "double *" is incompatible with parameter of type "const char *" in sendto() function"

double arrayTosend[100] 

int sendOk = sendto(out, arrayToSend, sizeof(arrayToSend), 0, (sockaddr*)&server, sizeof(server));

我建议您使用 Google's Protocol Buffers 来处理数组的传输:

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