一个简单问题,关于通讯过程中的数据类型
通讯协议中数据类型有定义为整型的,好像是说定义整型更节约空间,但是在数据
包里都是以字符串存在的,才可能传输吧,那怎么体现出节约空间?
如一个包: "thisistest1234 "在socket传输中肯定是作为一个字符串来传输,如果我把
"1234 "这个字段作为整型,能体现节约空间吗?
[解决办法]
举个例子,假设通信协议里,包得定义通常为包头,包体
包头结构会有2个字段,一个记录类型,一个记录整个包的长度比如1024000字节
包体紧跟包头,占据1024000字节中除了包头之外的字节
那么记录长度的那个字段通常用4字节整型来记录,或者更长的,但通常不会超过8个字节,如果包的长度小,那么一个或者2个字节就可以存放了
假设包250个字节,存储250三个字符需要3个字节,但实际上用一个字节就可以记录长度
每个包省去了2个字节,假设10万个包,就可以省去20万个字节
[解决办法]
SendMessage(char* SendBuffer) 参数只是一个指针,指向一个内存区域。
CString s= "123456 "
int i=123456,
这样看你怎么分配缓冲区
比如 int i=123456;
char sz_i[4]={0};
memcpy(sz_i,&i,sizeof(int));
SendMessage(sz_i,4)
CString s= "123456 "
SendMessage(s.getbuffer(),s.getlength());
你看看那个节省空间?