在c ++中通过套接字发送二进制数据

Uld*_*isK 0 c++ sockets c++11

在C++中,我有这样的数据结构:

struct Data 
{ 
int N; 
double R; 
char Name[20];
};
Run Code Online (Sandbox Code Playgroud)

这个数据我必须从一个客户端发送到另一个系统上的服务器(我必须发送一个数据结构数组,但我可以一个接一个地发送它).我想把它作为二进制数据发送出去,这样我就可以在另一端提取数据,把它放在同一个结构类型中.

如果(客户端和服务器)都使用相同的编译器进行编译,则sizeof(Data)和结构内的所有位填充都是相同的.但由于服务器是64位运行Linux,客户端甚至可能是32位窗口,因此数据中的数据排序可能会有所不同.

我对吗?处理这个问题的最佳方法是什么?

Kri*_*son 5

假设所有客户端和服务器总是使用相同的编译器为相同的体系结构构建,操作系统几乎总是一个坏主意.最好编写将结构成员显式打包和解包为具有指定排序的字节流的代码,或者将数据转换为可在另一端解析的非二进制格式(例如JSON或XML).