考虑定网络协议。这个定义的协议可以用来控制机器人外围在网中心。净基于工作站。(如果它是重要的,机器人是繁忙的移动工厂在芯片生产环境中)。

  • 只有2个缔约方在对话:.网站和机器人外围板
  • 机器人一侧只能收到的请求而发送的答复
  • 。净面只能发出请求和收到的答复
  • 有始终应该是一个响应每个请求
  • 随之而来的请求可以按照立一个接一个没有等待的反应,但是从来没有超过固定限制的同时提供要求(例如5)

我已经详尽的讨论和我的朋友(他拥有的设计,我已经讨论了这件事作为一个旁观者)有关的所有不错的详细信息和想法。在讨论结束,我们有强烈的分歧,关于失踪的超时。我朋友的论点是,软件在这两个方面都应该无限期地等待。我的论点是,超时总是需要通过任何网络协议。我们根本不可能同意。

我的一个理由是,在任何情况下失效应"快速失败"的任何费用,因为如果失败已经发生,无论如何,成本恢复的持续增长成比例地花费的时间接收一个信息有关的失败。说1分钟后在局域网,你绝对应该停止等待,仅援引一些警报。

但是他的论点是恢复应包括完全修复的什么失败的(在这种情况下恢复网络的连接),即使这需要花几个小时找出这个网络是丢失的和固定的,该软件应只是继续透明地运行,之后立即重新连接局域网的电缆。

我从来没有认真想永恒的协议,直到这次讨论。

哪一边的说法是正确的?在"快速失败"或"不"?

编辑:例的失败是损失的通讯,通常由检测TCP层。这部分也进行了讨论。在情况下的TCP层返回的错误,高定义的协议层会重新发送的,并没有争论。问题是:对于如何长允许下级不断尝试?

编辑接受的答案:答案是复杂得多,2个选择:"最常见的方法是永远不会放弃的连接,直到实际发送尝试失败的固体确认这方面是长期失。计算这一方面是长期失去使用检测信号,但保留年龄的损失为此确认,而不是立即报警".

例如:当时具有的远程登录届会议,你可以保持你的终端了永远和你永远不知道如果在之间打入有失败可能被较低级别的程序。

有帮助吗?

解决方案

我喜欢你的"快速的失败"的方法,但我认为你发现了,这是高度的优惠。

思科设备,我的工作与工作非常类似的-你发送的请求,他们作出回应。(超过telnet。) 问题是当网络的失败:我失去TCP连接。然而,任何一方都不会接近那个连接到一个数据发送的企图,因为cisco侧很少这样做,它永远不会关闭。更糟糕的是,你只能有1个连接在一段时间,所以,如果有的网络故障的,你在锁定。(他们可以重置的,但这是一个只是一个麻烦。)

现在来测试一个网络连接的,则需要某种形式的平,只是一个"你还在吗?" -许多协议这样做,例如目标和因诺琴蒂研究中心的.但是,这些脉冲带宽成本,这取决于你如何经常送他们。

所以,是的错误检测值得的成本在带宽?多么大的不平真正需要的是什么?我敢说你的应该能够得到它的 <50八/萍,你可以平喜欢一次,每次10秒、30岁,1m,类似的东西,我会说它是值得的。你越早知道你有问题,更好。如果软件本身,然后可以使用这些坪知道它丢失的连接和重新建立接触动,我想说,这是伟大的"计算机,治愈你自己",并使减少麻烦。

如果你使用TCP/IP,它可以这样做将自动适合你-看看TCP保持连线.或者,你可以做到这一内应用程序的协议,作为瞄准和因诺琴蒂研究中心做的。

其他提示

在这种情况...

  • 控制器已派出一个请求
  • 机器人未收到的请求
  • 网络出现故障

...然后请求已经发送,但已经失去的和将永远不会到达。

因此,当网络恢复,控制器必须重新发送的请求:控制器不能只是永远等待的反应。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top