gpt4 book ai didi

c++ - 如何确保从 tcp/ip 套接字获取最新数据?

转载 作者:行者123 更新时间:2023-11-28 05:32:45 25 4
gpt4 key购买 nike

所以我正在使用通过以太网电缆连接到计算机的相机,显然,必须作为 tcp/ip 流套接字访问。

基本上,我想要每 1 秒拍摄一张图像。我注意到尽管来自摄像头的输入数据一直在传入,而我想要的只是从摄像头获取最新数据而不是其他任何东西,即当时只有最新的图像。

到目前为止,我读到的是我需要多次读取输入数据,直到到达“最新数据”。这真的是唯一的方法吗?我真的不喜欢一个进程一直忙于“丢弃”来自流套接字的传入数据的想法。

从理论上讲,我不能减少套接字输入的“输入缓冲区大小”,以便我只能接收一张图片的数据吗?然后,每一个进一步传入的数据都会被浪费,所以当输入缓冲区被刷新一次时,它会被最新的数据或类似的东西填充。 (我的意思是,对于来自流的输入数据可以“堆积”以等待处理/读取的数量必须有一些限制,对吗?达到该限制时会发生什么?进一步的数据是否被丢弃或者是“缓冲区”被新数据覆盖了吗?)

这可能吗?我是一个完全的初学者,所以我只是在理论上。如果这样的事情是可能的,任何人都可以展示如何编写代码的大纲吗? (我必须在 Ubuntu 上使用 boost asio 库来处理这些东西)那将非常有帮助!

最佳答案

是的,这是唯一的方法。

使用 TCP 的全部原因是它是一种“可靠”的协议(protocol),可以保证交付。与 UDP 相对。

TCP 的工作是按照发送顺序将数据传送到接收方,而不会丢失任何内容。如果无法传送数据,则连接会在某个时候断开,此时 TCP 会放弃。但是,只要存在事件连接,接收方就会获得发送方发送的所有内容。

如果您不想获得发件人获得的某些数据,您必须与发件人做出任何适当的安排,以实现这一点。 TCP 不会丢弃数据,只是因为接收方不想要它。

关于c++ - 如何确保从 tcp/ip 套接字获取最新数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39049893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com