今天是3月17日,由于前两天连续跟美国那边调试bug,人也有点体力透支。这里事情也耽误了,主要是晚上回来啥也不想干。坐在电脑前或者发呆,或者看几集无聊的肥皂剧就睡觉了。这两天知道项目的发布时间延后,所以今天有时间把这个程序调试一下。
开始的时候,我发现发送的报文格式不能被Wireshark正确的解析。调试后加上了一些具体的分隔符'/0',使得Level2Encoding后的报文内容已经跟标准答案一样了,可是最后发送报文的格式还是不对。从wireshark看,是一部分内容被截断了,导致了问题的出现。
最后,发现问题就出在发送内容时,数据内容长短的指定上。我用strlen来进行内存区长度的计算。另外,我用strcpy来进行内存区拷贝也是造成一开始报文内容不正确的原因。由于strcpy拷贝字符串时,是以'/0'作为结束字符的。所以如果在拷贝报文中含有0x00这样的字节,那么需要拷贝的内容就会被截断。而这样的情况,在报文成包的过程中会大量出现。所以,正确的方法应该是,使用memcpy之类的函数,另外,strlen这样的函数也不能用来计算内存区长度的。
最后,第一个报文终于正确的被wireshark捕获出来。