是否可以使用SSL_write和SSL_read发送和接收结构?
客户端
typedef struct{
unsigned int userid;
unsigned int name;
} sendInfo;
sendInfo infofile;
SSL_write(ssl, infofile, sizeof(struct infofile));
服务器
bytes = SSL_read(ssl, struct(infofile), sizeof(struct infofile) );
是否有其他方法可以发送结构?
干杯。
答案 0 :(得分:1)
你不应该这样做。 C数据结构没有强制的通用内存布局,在所有体系结构和平台上都是相同的。序列化数据时,总是必须将其分解为单个部分(整数和字节序列),而且还必须指定所有多字节字段(如整数)的大小和顺序(字节顺序)。
想象一下,你在街上找到了一块字节。你怎么知道这意味着什么?序列化时,必须发布格式规范,可以应用于找到的字节,并说“这是第一个整数”,“这是一个字节序列,由先前读取的整数计算”,使用此信息,相应的反序列化代码可以重建内部数据结构。
典型的序列化字段类似于“无符号32位整数,小端”。这意味着您必须写出字节n & 0xFF
,(n >> 8) & 0xFF
,(n >> 16) 0xFF
,(n >> 24) & 0xFF
,并在buf[0] + (buf[1] << 8) + (buf[2] << 16) + (buf[3] << 24)
中回读。请注意,您永远不需要了解有关您的平台的任何信息,只需了解有线格式。
答案 1 :(得分:0)
除了你可能意味着&infofile
。