因此,我正在使用通过以太网电缆连接到计算机的摄像头,并且显然必须作为tcp/ip流套接字进行访问。如何确保从tcp/ip套接字获取最新数据?
基本上,我想要像每1秒拍摄一张图片。我注意到虽然来自相机的输入数据不断出现,但我想要的仅仅是从相机获取最新数据,而不是其他任何东西,即只有当时最新的图像。
我到目前为止读到的是我需要多次读取输入数据直到达到“最新数据”。这真的是唯一的方法吗?我真的不喜欢这样的想法:一个进程一直忙于从流套接字中“丢弃”传入的数据。
理论上,我不能减少来自套接字输入的“输入缓冲区大小”,以便我只能接收一张图片的数据值?然后,每一个进一步的数据都将被浪费,所以当输入缓冲区被刷新一次时,它会被最新的数据填充或类似的东西。 (我的意思是,对于有多少来自流的输入数据可以“堆积”等待被处理/读取是有限制的,对吧?当达到该限制时会发生什么情况?进一步的数据被丢弃还是'缓冲区'被新数据覆盖了吗?)
这可能吗?我是一个完整的初学者,所以我只是推理。如果这样的事情是可能的,任何人都可以显示如何编码的大纲? (我必须在Ubuntu上使用boost asio库来处理这个东西) 这会非常有帮助!
嗯,好的。那么,是否有可能使用这个UDP协议来代替以太网连接呢?像UDP/IP的东西? (我只知道相机设备有固定IP,需要连接) – kushy
您必须查阅相机的技术参考手册。如果摄像机支持UDP流,那么您不需要我的许可即可使用它。 –
我在手册中查了一下,它在可能的协议列表中列出了'tcp/ip stream':-(猜猜我必须设置一个额外的线程来'捕捉并丢弃'传入的数据真的时间,不能帮助,我猜。 反正,感谢您的帮助! – kushy