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

Networking 如何处理Rebol 3方案中的超时时间,networking,rebol,rebol3,Networking,Rebol,Rebol3,在Rebol 3中启动异步IO事件系统的一种常见方法是在端口上等待。要检查超时,将方案中的值添加到等待块中 wait [port timeout] 但是,小型电子邮件的默认超时可能不适合于多兆字节的文件 最好的处理方法是什么?如果仍在接收数据,能否在脚本接收数据时更新等待列表,以避免不必要的超时?循环如何? 永远[wait[port 1]如果magic port有数据?port[process]]这看起来还没有实现。卡尔说,在第9期《超时》这篇文章中 设备模型实现的较低级别端口已经包括 超时功

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

wait [port timeout]
但是,小型电子邮件的默认超时可能不适合于多兆字节的文件

最好的处理方法是什么?如果仍在接收数据,能否在脚本接收数据时更新等待列表,以避免不必要的超时?

循环如何?
永远[wait[port 1]如果magic port有数据?port[process]]

这看起来还没有实现。卡尔说,在第9期《超时》这篇文章中

设备模型实现的较低级别端口已经包括 超时功能。它当前未启用,但需要启用。 这将满足连接或其他操作的第一个要求 读取及其相关超时。此方法不使用常规方法 计时器端口,因为较低级别的端口设备可能存在以下问题: 对这样的端口进行更高级别的调用

在更高层次上,我们一直计划提供计时器方案 对于这些端口。应该有可能公平地提供这些信息 很快,因为基本的计时代码和内核级别被唤醒 机制已实现(针对Win32系统API)


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

由于数据包往往很小,它们到达的速度很快,如果长时间不接收数据包,则表明网络/服务器出现故障,您可能希望获得超时时间。(例外情况是发生数据包聚合时,但聚合不会太多,通常会出现长延迟。)


所有这些,我不确定它们是否在R3中实现。根据之前的评论,我想不是。网络系统是我为R3编写的第一个部分之一,它既精巧又吝啬,但肯定需要一些注意。

我认为tcp://方案应该解决这个问题。。。以某种方式我注意到http方案也有同样的问题。。尝试下载一个大文件,并看到超时错误。已尝试。基于rebol.net/wiki/Port_示例#Read_all_of_large_文件,查找“!!”当然,您已经设置了自己的异步处理程序,但是默认的“在http方案中读取”将超时。所以,我想问的是,是否有人建议自动处理这个问题,而不是要求用户设置自己的处理程序。我很困惑。默认的“读取”执行自己的等待。由于您自己进行等待,所以我认为您是以异步方式进行的。我如何使用“阅读”并仍然自己等待?“读取超时”是一个错误,它应该因为延迟而超时,而不是在连接正常运行时。http方案中的默认“读取”检查是否安装了默认处理程序。如果是这样的话,它会用它来给人一种同步动作的印象,然后等待开始。如果您使用自己的处理程序,并且不像您的示例中那样在connect上发送请求,那么您可以在read中使用等待来启动。