- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
首先,一些上下文来解释为什么我在“UDP 采样”路线上:
我想对未知时间段内快速生成的数据进行采样。我要采样的数据在另一台机器上,而不是在使用数据的机器上。我在两者之间有专用的以太网连接,因此带宽不是问题。我遇到的问题是消耗数据的机器比生成数据的机器慢得多。一个额外的约束是,虽然我没有得到所有样本(它们只是样本)也没关系,但我必须得到最后一个。
我的第一个解决方案是让数据生产者为每个生产的样本发送一个 UDP 数据报,让数据消费者尝试获取它可以获取的样本,并让其他样本在 UDP 套接字已满时被套接字层丢弃。此解决方案的问题在于,当新的 UDP 数据报到达且套接字已满时,丢弃的是新数据报,而不是旧数据报。因此,我不能保证拥有最后一个!
我的问题是:有没有办法让 UDP 套接字在新数据报到达时替换旧数据报?
接收器目前是一台 Linux 机器,但将来可能会改变为支持另一个类 unix 操作系统(windows 可能是可能的,因为它实现了 BSD 套接字,但不太可能)
理想的解决方案是使用广泛的机制(如 setsockopt()s)来工作。
PS:我想到了其他解决方案,但它们更复杂(涉及对发件人进行大量修改),因此我想首先对我提出的问题的可行性有一个明确的状态! :)
更新:- 我知道接收机器上的操作系统可以处理网络负载+发送方生成的流量的重组。只是它的默认行为是在套接字缓冲区已满时丢弃新的数据报。而且由于接收过程中的处理时间,我知道无论我做什么它都会变满(在套接字缓冲区上浪费一半的内存不是一个选项:))。
- 我真的很想避免让辅助进程执行操作系统在数据包调度时可以完成的操作,并避免在 SHM 中复制消息而浪费资源。
- 我在修改发件人时看到的问题是我有权访问的代码只是一个 PleaseSendThisData() 函数,它不知道它可能是很久以前最后一次被调用,所以我不在那一端看到任何可行的技巧......但我愿意接受建议! :)
如果真的没有办法改变 BSD 套接字中的 UDP 接收行为,那么好吧......告诉我,我准备接受这个可怕的事实,并且当我开始研究“辅助进程”解决方案时回去吧:)
最佳答案
只需将套接字设置为非阻塞,并在 recv()
上循环,直到它返回 < 0 和 errno == EAGAIN
。然后处理您收到的最后一个数据包,冲洗并重复。
关于c - 如何使 UDP 套接字在新消息到达时替换旧消息(尚未接收())?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3458385/
我正在尝试制作一个程序,显示飞机到达和起飞的时间表,然后要求用户在 C 中输入时间。然后程序将找到最接近输入时间的到达时间用户。问题是它没有按预期工作,并且给我一个错误的到达时间,甚至不接近输入的时间
我有一个不断填充新信息行的 Excel 表,其中一列与联系客户的日期(有时为空 - 无需输入日期)相关,如果在 10 内没有收到回复从那以后的几天,我们必须发送提醒,如果过了 17 天,我们必须取消订
实际到达很简单,标签进入接收器天线范围,但是偏离是造成问题的原因。 首先,我们了解一些有关设置的信息。 标签: 它们以433Mhz的速度工作,每1.5秒钟发送一次“心跳”,移动时进入传输突发模式,这种
我构建了这段代码来从 URL 获取 XML我使用了 AsyncTask,当到达 getInputStream() 点时,半身应用程序仍然崩溃 重点是我想从 url 获取 XML 作为字符串。 我尝试不
所以我有一个 TDBGrid,我的目的是搜索 DBGrid 的 Fieldname 并将其与我的编辑的 Text 属性进行比较,如果它们相等,则 我想将找到匹配项的整列写入列表框。 通过带有 fiel
我会写得非常简单,因为实际的修复并不比我不理解的实际设计重要。似乎一旦我的 @RequestBody 命中 @Controller,有关 subtype 的信息就会丢失。 假设我们有: class A
所以我正在做这个简单的动态编程问题,关于达到 n一次只能走 1 或 2 步。我知道答案基本上是一个斐波那契序列,答案是:达到n-2的步骤数+ 到达 n-1 的步数. T(n) = T(n-1) +
(function start (){ $('.bar').each(function(i){ var $bar = $(this); $(this).append('')
我有一个程序,我在启动它之前要求用户输入。 public static void main(String args[]) { String database = JOptionPane.sho
就是这样,我必须在提交按钮上有一张图片,但它根本没有出现。 我希望它看起来像这样: 现在看到我的是这样的,我不明白为什么它没有出现在页面上。 HTML CSS #sognu { bac
click here 点击后重定向至 xyz.com/#contact, 现在我想获得div #abc的顶部位置 //set the value as a variable, and remove t
here is a fiddle to know where I am starting from 我要解决的问题涉及对单个 html 文件的内容进行“分页”,以一种将它们一次锁定在一个部分中的方式。
是否可以在传递页面部分时运行 javascript 函数?我想要实现的是类似于 Twitter Bootstrap 的 scrollspy。 最佳答案 您可以使用 waypoints 插件: http
我有一个可以动态调整其大小的 iframe。我通过父页面上的发布消息和监听器解决了这个问题,因此每次 iframe 的内容发生变化时,iframe 的大小也会发生变化,并且永远不会有滚动条。 在 if
我试图让我的导航栏在到达我在网站下方设置的 anchor 时变得透明。 这是我的HTML Home About Logo W
我写了一个简单的程序来管理姓名列表(下面是程序的一部分)。我希望函数“choice()”结束并返回到 main()——从而结束程序——当用户对变量“option”的输入为 4 时。然而,choice(
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
代码片段在 while 循环后有一个 EOF,之后必须再次重新打开文件 - fopen 被重用。我的问题是是否有办法避免这种笨拙的 fopen 双重使用或以某种方式不使用 EOF? if (!(f=f
从这个页面: http://www.beta.inegi.org.mx/app/buscador/default.html?q=e15a61a 我正在尝试检索此网址: http://www.beta.
我使用维基百科的 API 来获取有关页面的信息。API 给我这样的 JSON: "query":{ "pages":{ "188791":{ "pageid":18879
我是一名优秀的程序员,十分优秀!