是否可以使用SSL_write和SSL_read发送结构?

时间:2011-10-27 11:53:27

标签: c openssl

是否可以使用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) );

是否有其他方法可以发送结构?

干杯。

2 个答案:

答案 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