通用套接字问题-传输C++;从Java到C的结构++;
我有一个通用的套接字编程问题要问你 我有一个名为Data的C结构:通用套接字问题-传输C++;从Java到C的结构++;,java,c++,sockets,packet,struct,Java,C++,Sockets,Packet,Struct,我有一个通用的套接字编程问题要问你 我有一个名为Data的C结构: struct data { double speed; double length; char carName[32]; struct Attribs; } struct Attribs { int color; } 我希望能够在java中创建类似的结构,创建一个socket,用上面的结构创建数据包,并把它发送到C++ socket侦听器。 关于序列化数据(基本上
struct data {
double speed;
double length;
char carName[32];
struct Attribs;
}
struct Attribs {
int color;
}
我希望能够在java中创建类似的结构,创建一个socket,用上面的结构创建数据包,并把它发送到C++ socket侦听器。 关于序列化数据(基本上是数据包中传输的1和0),您能告诉我什么。C++如何“读取”这些数据包并重新创建结构?这样的结构如何存储在数据包中
总的来说,你能告诉我的任何事情都能给我解决这件事的方法 谢谢 基本过程是:- java应用程序在java应用程序中创建一些可移植的结构版本,例如XML
- C++应用程序从java应用程序接收XML
- C++应用程序使用XML消息中的数据创建结构实例
- 如果使用二进制序列化,请厌倦endianness。Sun的JVM是Big-Endian,如果您使用的是Intel x86,那么您使用的是一台小型Endian机器李>
- 我将使用Java实现快速的本机序列化。ByteBuffers是NIO库的一部分,因此应该比ol的DataInput/OutputStreams性能更高
- 对序列化浮动特别厌倦!如上所述,将所有数据通过网络传输到字符串更安全
- 注意,基本C++类型的大小是实现定义的,所以爪哇和C++中的原始类型不直接翻译。李>
- 你可以使用缓冲区。如果处理各种数据结构,我的首选解决方案
- 您也可以使用JSON进行序列化
size_t amount_read = 0;
data my_data;
memcpy(buffer+amount_read, &my_data.speed, sizeof(my_data.speed))
amount_read += sizeof(my_data.speed)
memcpy(buffer+amount_read, &my_data.length, sizeof(my_data.length))
amount_read += sizeof(my_data.length)