如何处理Rebol 3方案中的超时时间

时间:2013-01-28 05:29:37

标签: networking rebol rebol3

在Rebol 3中启动异步IO事件系统的常用方法是等待端口。要检查超时,可将方案中的值添加到等待块中。

wait [port timeout]

但是,小型电子邮件的默认超时可能不适合多兆字节文件。

处理此问题的最佳方法是什么?如果您仍在接收数据,是否可以在脚本接收数据时更新等待列表,以免不必要地超时?

3 个答案:

答案 0 :(得分:5)

我认为端口超时应该基于数据包时序触发,而不是完整请求。因此,在电子邮件上设置超时30秒意味着您在30秒内没有收到数据包。

由于数据包往往很小,它们很快就会到达,而且长时间不接收数据包会表明网络/服务器出现故障,您需要获取超时。 (例外情况是发生数据包聚合时,但是,通常不会发生这么多聚合,通常会发生长时间延迟。)

所有这些,说,我不确定它们是否在R3中实现。基于之前的评论,我猜不是。网络系统是我为R3写的第一部分,它很精简,但肯定会引起注意。

答案 1 :(得分:1)

看起来这还没有实现。在这篇文章http://www.rebol.net/wiki/Ports_and_Schemes:_Issues第9期:超时,卡尔说

  

设备型号实现的低级端口已包含   超时功能。它目前尚未启用,但需要启用。   这将满足CONNECT或。等操作的第一个要求   阅读及其相关的超时。这种方法不使用一般   定时器端口,因为较低级别的端口设备会出现问题   对这样的端口进行更高级别的调用。

     

在较高级别,我们一直计划提供TIMER计划   对于这样的港口。应该可以公平地提供它   很快,因为基本的时序代码和内核级唤醒   机制已经实现(对于Win32系统API)。

答案 2 :(得分:0)

循环怎么样? 永远[等[端口1]如果魔术端口有数据? port [process]]