在工作中,我遇到了实现私有协议的诸多麻烦,其中更多的是文档的残缺和错漏,以及对于某些领域采用的专业的表示。很多的私有的协议,在刚开始的时候,没有过多的考虑到可扩展性,所以使用的都是结构体,并且结构体在字节的控制上,并没有采用严格的规定,导致在实现的过程中,需要不断的尝试。我自己在实现的过中,遇到的一个问题就是如何正确的分析报文中的有效字符。究竟这些斧子的确切含义,对于实现功能是至关重要的。我刚开始没有老大的意见:详细的分析每一个字节代表的含义,实在是惭愧。可能是100多个字节,完全是无法了解的。就像我第一次接触正则表达式,第一次接触perl脚本,一次接触php等等。所有的种种都是挑战,所有的种种都是磨练。
在帮助一个同事实现已经实现过的协议的过程中,还是失败了。我拷贝整一个结构体,填充的也是一样的,但是没有实现功能。
这个问题一直困恼。
总结如下:
1)尝试找到解析结构体的代码,详细的参考其中的定义,如果可以尝试添加代码进行测试,打印其中的所有相关的参数,对于所有的代码,我们应该进行分析,赋值的含义
2)退一万步讲,我们没有解析端的代码,与此同时,我们没有正确的协议,我们只有模糊的定义。我们必须非常清晰的分析其中的每一个字节代表的含义。
3)通过修改结构体的参数,查看最终变化的结构体参数是那些?这是至关重要的,
4)字节的对齐,永远需要测试两次就可以了,不要盲目的改变,注意测试的结果,而是注重成功与否。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
不管如何,我们始终要面对的,逃避是无法解决问题,既然身在江湖,就应该做好准备,搜有的抱怨,所有的不满,所有的无奈,只不过是软弱的借口,都是无能的表现。即使是字节,也没有什么大不了的,现在perl,已经不在话下了。