对这个问题感兴趣。如果不知道脚本将在哪个操作系统上使用并且 ping 速度非常关键,如何使用 Lua 端口 ping 网络上的远程计算机/服务器?我试过这个命令io.popen()
,但问题是如果计算机不可用,脚本可能会挂起,线程阻塞一段时间,这在我的情况下是不可接受的。我们需要一个简单快捷的解决方案,将远程计算机/服务器 ping 到 Lua,如果它没有立即响应,则不要等待它,而是立即切断连接并返回失败。可以通过 IP 地址和带有端口的名称进行 Ping,例如 - google.com 80 (port)
。我在互联网上找不到解决此问题的方法。
您可以考虑尝试通过套接字打开端口,如果端口可用,则连接将发生,您自己指定超时时间:
结果:
对于 Windows,一切都很复杂,但您可以尝试 cygwin。
对于 Posixes (linux, poppy, bsd, cygwin)
要定义名称,请添加
要设置超时,您需要在此代码中添加选择和非阻塞套接字。
https://luaposix.github.io/luaposix/examples/ping.lua.html https://luaposix.github.io/luaposix/examples/socket.lua.html
Ping 可以在没有端口的情况下工作,但如果我们谈论的是同步扫描攻击,那么这是一个不同的代码。
在这种情况下,您可以使用更简单的方法,
luasocket
但在超时之前会出现阻塞。