|
楼主 |
发表于 2005-1-9 22:50:06
|
显示全部楼层
[quote:8843325cae="llemmx"]哦对了,我们在解析协议时能否能使用先解析在使用的方法呢?就是说我们将协议描述成一个一个的struct
每个协议来到时我们先将数据解包到这些struct中
在解析的过程中可以对这些数据进行合法性检查.成功了在正真使用这些数据,可能会慢点但是应该安全.我在公司里与那些个单片机的实时操作系统通讯时都用的这方法.
例如:
02 03 04 05 06 BB
假如这里我们的0203,0405,06BB在单片机中表示整形
那么我们pc机的结构体可以定义成
struct{
int nVar1;
int nVar2;
int nVar3;
}ss;
缓冲区的名称为buf
解析
ss.nVar1=buf[0]*0x100+buf[1];
...
如果这个包没有任何问题我们将直接提交结构体处理.(这里是c的例子如果是c++的话那么就可以用类来代替结构体那么直接提交的是类)
我是不是太唠叨了 [/quote]
, 不唠叨。
你再看看我程序的结构, 把你的想法再具体一点, 我也考虑这样可能会出现
解析问题, 但是我使用中没有发现出过问题。另外,因为我知道接收到了多少
个字节,字节不符条件,就不解析了,我考虑在父类Packet里加一个标识解析出错的变量, 用解析过的包的时候先看是否出错。
你再考虑一下你上面的想法,把它落实到Eva上,开发人员再一起探讨一下,
如果可行,我们下一版就改掉,这一版先这么做出来,再完善它。
呵呵,慢一点没关系, 数据有没有多少, c++的也慢不到那里去的。
不会有明显的感觉的。 |
|