首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

一个简单有关问题,关于通讯过程中的数据类型

2012-01-21 
一个简单问题,关于通讯过程中的数据类型通讯协议中数据类型有定义为整型的,好像是说定义整型更节约空间,但

一个简单问题,关于通讯过程中的数据类型
通讯协议中数据类型有定义为整型的,好像是说定义整型更节约空间,但是在数据
包里都是以字符串存在的,才可能传输吧,那怎么体现出节约空间?
如一个包: "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());

你看看那个节省空间?


热点排行