实习项目需要用Winsock内核模式驱动提供的sockets方法,,这个驱动负责连接和缓冲管理,对应用程序提供socket风格的编程接口。
大概的流程是发送端将一幅图像分成多个包进行发送,接收端接收包整合成图像并显示。
通过测试发现,发送端是相机,采用udp协议,发送的图像数据包有3428个,并且通过wireshark抓取到全部的包,但是接收端只能接收到3000个包左右,出现了丢包现象。
分析UDP丢包的原因:
1)调用recvfrom方法接收到数据后,处理数据花费时间太长,再次调用recvfrom,两次调用间隔里,发过来的包可能丢失。
通过将接收到数据存入一个缓冲区,并迅速返回继续recvfrom,排除了这个原因
2)通过数据包的id域观察发现,