最近写一个网络分析的玩意,用RAW_SOCKET从网卡上面直接取出数据帧,然后解析,为了就是找出tftp包。解析到数据内容的时候,把数据写出到文件里面,是用fprintf(xx,"%s",xxx)直接写进去的,结果发现每次自己生成的文件都比原来的文件大。比如原文件是100bytes,获取到的文件可能是108字节。
先用 diff 查看,发现竟然每行都显示不同,可是我进去vim编辑的时候,看上去都是一样的。
用hexdump -C 查看,总算知道不一样的地方了。
linux上都是以‘\n’来表示换行的,ascii码是0A,表示LR,netascii表示数据都是以成行的ASCII码字符组成的,以两个字节—回车字符后换行(CR/LF,0D/0A)表示行结束。这两个行结束的字符在这种格式和本地主机使用的行定界之间进行转化。而octet则将数据看作8bit一组的字节流而不做解释。
所以就处理数据的时候把CR(0D,'\r')不写到文件里面,这样得到的文件就OK了。当然文本文件是肯定OK了,因为文本文件的组成就是ASCII码,都能解析出来。要是换成二进制文件就不一定的,里面可能会有其他字符。起码我这边实现的时候二进制文件总是传的不对。
分享到:
相关推荐
小议ORACLE和MYSQL的联合查询差异.pdf
小议新形势下大额现金管理.doc
小议信息服务和智力资本的概念.doc
小议现行金融制度对农业的影响.doc
小议外汇期权会计在新规则中应用.doc
小议长江水质的评价和预测.doc
小议经济型酒店消费者心理及消费方向.doc
小议图书馆网站的创立和维护.doc
小议企业管理体制的特点和经验.doc
小议金融衍生品的作用和风险.doc
小议羊首勺
小议企业思想政治工作和企业文化建设.docx
小议一年级教学解决问题的现状和解决策略
小议我国高价房的形成和解决方法.doc
小议秦始皇焚书坑儒.doc
私立幼儿园小议.pdf
小议初中政治趣味教学
嵌入式linux小议:ELF 文件格式分析嵌入式linux小议:ELF 文件格式分析
小议JavaScript库——Dojo、jQuery和PrototypeJS的比较.pdf