如何在新到达时使UDP套接字替换旧消息(还没有recv()’d)?

如何在新到达时使UDP套接字替换旧消息(还没有recv()’d)?,第1张

概述首先,一点上下文来解释我为什么选择“UDP采样”路由: 我想在一段未知的时间内快速生成数据.我想要采样的数据是在另一台机器上,而不是消耗数据的机器.我在两者之间有专用的以太网连接,因此带宽不是问题.我遇到的问题是消耗数据的机器比生成数据的机器慢得多.一个附加的约束是,虽然我没有得到所有样本(它们只是样本),但我必须得到最后一个样本. 我的第一个解决方案是让数据生成器为每个生成的样本发送一个UDP数 首先,一点上下文来解释我为什么选择“UDP采样”路由:
我想在一段未知的时间内快速生成数据.我想要采样的数据是在另一台机器上,而不是消耗数据的机器.我在两者之间有专用的以太网连接,因此带宽不是问题.我遇到的问题是消耗数据的机器比生成数据的机器慢得多.一个附加的约束是,虽然我没有得到所有样本(它们只是样本),但我必须得到最后一个样本.

我的第一个解决方案是让数据生成器为每个生成的样本发送一个UDP数据报,让数据使用者尝试获取它可能的样本,并在UDP套接字已满时让其他人被套接字层丢弃.这个解决方案的问题是,当新的UDP数据报到达并且套接字已满时,新数据报将被丢弃而不是旧数据报.因此,我没有保证拥有最后一个!

我的问题是:有没有办法让UDP套接字在新到达时替换旧的数据报?

接收器目前是一台Linux机器,但是未来可能会改变另一种类似unix的 *** 作系统(windows可能会实现BSD套接字,但不太可能)
理想的解决方案是使用广泛的机制(如setsockopt()s)来工作.

PS:我想到了其他解决方案,但它们更复杂(涉及发件人的大量修改),因此我想首先对我要求的可行性有一个明确的地位! 总结

以上是内存溢出为你收集整理的如何在新到达时使UDP套接字替换旧消息(还没有recv()’d)?全部内容,希望文章能够帮你解决如何在新到达时使UDP套接字替换旧消息(还没有recv()’d)?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1255204.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存