2309简化的报文接收处理

来源:互联网 发布:淘宝女士连衣裙 编辑:程序博客网 时间:2024/06/06 05:31
描述: 

简化的报文接收处理

JSON协议在网络上传输时,格式为前4个字节为报文的长度,后面紧跟报文数据(字符串)。
因为报文可能在网络上分片,会导致一个长报文被分成多个小的。

现简化协议处理,一个报文拆分为两部份,前4个字符串,表示报文的长度(十六进制);后面跟N个字符串表示报文内容(不包括换行);
如果后面的N个字符的长度正好与前面4十六进制表示的数值是一样的,表示是一个完整的报文;
如果后面的N个字符的长度大于前面4十六进制表示的数值,则是一个错误的报文,需要丢弃掉;
如果后面的N个字符的长度小于前面4十六进制表示的数值,则是一个分片报文,需要与后面一片报文进行累加;
    如果累加后,还小于前面4十六进制表示的数值,则还是一个分片报文,还需要与后面一片报文进行累加,直到累加的结果与前面4十六进制表示的数值相等,才表示一个正确的报文;
    如果累加后的长度大于前面4十六进制表示的数值,也是一个错误的报文,需要丢弃掉,下一片报文重新计算;
如果报文长度小于4,即不足最少的表示报文长度的时候,认为是一个错误报文。如果此类报文在分片中出现时,处理完此错误报文以后,将前面的分片报文也当错误报文处理。

现在要求对输入的N个报文进行处理后,输出报文的统计结果,统计结果包括总的文数,即所有收到的分片数;正确的报文数,即包括正确的报文和累加后正确的报文;错误的分片,即丢弃的分片数;

例如,输入:
000Fabcdefghijklmsk
0002ab
0004ab
0004cd
EOF
输出:
Total count:4
Total package:3
Error count:0

注:
1、分片报文的前4个字符还是总的报文长度;即所有分片报文前面都是同一个长度;
2、不考虑报文乱序的情况;
3、报文内容不包括输入时,每行后面的换行符,仅包括可显示字符串,也不用考虑报文有其它特殊字符串(仅包括半角下的大小写字母,数字,引号,空格,逗号,句号);
4、最后的EOF表示输入完成,不做报文处理;
5、统计结果时, Total count表示收到的报文总数,只要收到一片报文(即一行输入),就认为是一个报文;
    Total package表示收到的正确包数,如果有分片,且正确,当一个包;
    Error count表示错误的报文总数,如果有分片的,所有都算错误报文,即如果有一个分片报文,一共三片,但最后加起来以后,发现是错误的,则算3个错误报文;

 

 知识点: 题目来源: 内部整理 练习阶段: 中级 运行时间限制:无限制内存限制:无限制输入: 

 

 输出: 

 

 样例输入:
000Fabcdefghijklmsk0002ab0004ab0004cdEOF                   
样例输出:
Total count:4Total package:3Error count:0                    
答案提示:

 

0 0
原创粉丝点击