【1 背景】

在Socket通信中,要传输结构化的数据或者要进行协议数据传输的时候,发送端必须要构造结构体进行数据传输。
接收端也必须通过同样的结构体进行解析。
但Socket传输结构体数据时候,稍有不慎就会出现:1)解析数据出错;2)接收数据不完整;3)解析为乱码等的Bug。

【2 举例】

如下是接收端解析数据为乱码甚至崩溃的一类常见错误。

结构体也就是一段连续的内存。 但是类似如下的结构体:

typedef struct _PER_SPIDER_INFO{UINT nTimeDelay; UINT nRtnCode; UINT nUrlPageLen; char* pszUrlPage; }PER_SPIDER_INFO;

不能直接通过传输的。

【3 根本原因】

如下:
1)结构体成员pszUrlPage是指针,指向的是结构体以外的内存


收藏 打印