如何进行操作,如果在6秒内未完成操作则停止操作?

时间:2015-06-25 19:51:35

标签: lua luasocket

我正在尝试使用LuaSocket从Lua中的telnet连接接收信息。我已经完成所有这些并且正在运行,除非我收到,如果我收到的内容少于最大字节数需要5秒。如果我收到的内容超过屏幕上的字节数,则需要半小时。

我目前对解决方案的想法是尝试接收例如750字节,然后如果在6-7秒内不起作用,则执行700字节,然后650,依此类推,直到我可以非常快速地接收它。我需要解析信息并找到两个特定的短语,所以如果有可能在我的telnet连接中做到这一点而只返回它而不是整个屏幕也可以。我也不需要所有这些,但我需要尽可能多的收到的信息来提高我的信息在它的块中的机会,因此为什么我在我的例子中只减少50。

我找不到任何允许你开始阅读某些东西(做一个函数)的函数,然后在一定的时间间隔后退出它。如果有人知道如何做到这一点,或者有任何其他解决方案,请告诉我! :)谢谢!

这是我需要重复的内容:

info = conn:receive(x)

每次完成时间超过6秒,x递减。

1 个答案:

答案 0 :(得分:0)

您提出的解决方案看起来有点奇怪,因为有更简单的方法来处理异步通信。首先,您可以使用https://docs.google.com/spreadsheets/d/11154fiVCSro111apVkYSlz1s4VW8D5X82WZsNTTHnCE/edit?usp=sharing来限制sendreceive调用等待结果的时间(请注意receive可能会返回部分结果这个案例)。第二个选项是使用settimeout,它允许您在发出阻塞命令之前检查套接字是否有读/写的东西。