请问长度不同UDP包中数据内容如何处理预防遗漏,udp包中,服务器端通过udp广播的
请问长度不同UDP包中数据内容如何处理预防遗漏,udp包中,服务器端通过udp广播的
服务器端通过udp广播的方式向客户端发送报文,报文的格式如下:
****cccgc@num=01@time=20081122100100@cccfxx=110@cccfss=0.2@cccttt=14.7@cccfxx02=120@cccfss02=0.2@cccfxx10=150@cccfss10=0.5@cccfxx2bh=110-150@cccprr=0.0@ccctdd=10.1@cccuuu=74@cccmaxt=14.7@cccmint=8.0@cccfss10max=1.7@cccfss10mnm=0.2@cccfss02max=0.6@cccfss02mnm=0.1@cccfxx10bh=150-230@cccppp=816.2@cccqfe=816.35@cccqnh=1025.60@cccvvv=19404@cccygjs=3150@####
每一对“key=value”都是用@符号分隔。每条报文里的“key=value”个数不一样,所以长度也不一样,但是我python读取udp包里的数据的时候,如果用recv(1024)这样固定的缓冲区长度去读取,有时候会不能把一条完整的数据报文读取到,想请问下大伙,平时是如何处理这样的报文的?能提供个思路不?
所有的基于TCP/IP协议的通讯应用都应该在开发之前制订应用层的通讯协议,比如在包头里明确数据包类型和长度,在包尾做异或校验或和校验。针对你目前的情况,只能考虑申请一段比较大的缓冲区,在没找到####之前就一直往这个缓冲区中memcpy,直至找到后,将缓冲区里的内容拿出来解析。
编橙之家文章,
相关内容
- Python list内元素生成新的组合怎么写,pythonlist,比如l
- Python静态存储文章页求教问题,python静态,Python新手,
- webui界面出现乱码是什么原因?pyspider已经安装,webuipy
- PyQt怎么操作可以完成不同界面间的切换操作,pyqt界面
- Python tornado方法access日志输出及分割问题求助,pythont
- Python字典排序要将dict按value排序源码怎么写,pythondic
- Python发送信息至TCP客户端服务器不能正常输出问题,
- Python Scrapy重写函数调用不成功,有源码求分析,pythons
- pyhton2.7 sublime text2配置 OS X环境,pyhton2.7sublime,在谷歌看
- Python如何求N维点集的中点方法,pythonn维中点,rectangle
评论关闭