1

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

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

我找不到任何可以让您开始阅读某些内容(执行功能)然后在一定时间间隔后退出的功能。如果有人知道如何做到这一点,或者对我的问题有任何其他解决方案,请告诉我!:) 谢谢!

这是我需要重复的内容:

信息 = 连接:接收(x)

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

4

1 回答 1

0

您提出的解决方案看起来有点奇怪,因为有更直接的方法来处理异步通信。首先,您可以使用settimeout来限制sendreceive调用将等待结果的时间量(小心,因为receive在这种情况下可能会返回部分结果)。第二个选项是使用select,它允许您在发出阻塞命令之前检查套接字是否有要读/写的东西。

于 2015-06-26T16:49:27.713 回答