首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以使用Lua "socket“库来查看端口的状态吗?

我可以使用Lua "socket“库来查看端口的状态吗?
EN

Stack Overflow用户
提问于 2017-09-04 17:19:28
回答 2查看 1K关注 0票数 8

帮助我跟踪特定端口的状态:"LISTENING“、"CLOSE_WAIT”、"ESTABLISHED“。我有一个使用netstat命令的模拟解决方案:

代码语言:javascript
复制
local command = 'netstat -anp tcp | find ":1926 " '
local h = io.popen(command,"rb")
local result = h:read("*a")
h:close()
print(result)
if result:find("ESTABLISHED") then
   print("Ok")
end

但是我需要对Lua socket library做同样的事情。有可能吗?

EN

回答 2

Stack Overflow用户

发布于 2017-09-15 02:44:24

您不能使用socket API查询另一个进程拥有的套接字的状态,这是LuaSocket在幕后使用的。

为了访问另一个进程的信息,您需要查询操作系统。假设您使用的是Linux,这通常意味着要查看proc文件系统。

我对Lua不是很熟悉,但是谷歌给了我这个项目:https://github.com/Wiladams/lj2procfs。我想这可能就是你需要的,假设他们已经为你需要的相关/proc/net文件写了一个解码器。

至于哪个文件?如果仅仅是状态,我认为您需要http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html中介绍的tcp文件

票数 1
EN

Stack Overflow用户

发布于 2017-09-15 02:46:53

就像@Peter said一样,netstat使用proc文件系统来收集网络信息,特别是端口绑定。LuaSockets有自己的库来检索连接信息。例如,

侦听您可以使用master:listen(backlog),它指定套接字愿意接收连接,将对象转换为服务器对象。服务器对象支持accept、getsockname、setoption、settimeout和close方法。参数backlog指定可以排队等待服务的客户端连接数。如果队列已满,而另一个客户端尝试连接,则连接将被拒绝。如果成功,该方法将返回1。如果出现错误,该方法将返回nil,后跟错误消息。

以下方法将返回一个包含本地IP地址的字符串和一个包含端口的数字。如果出现错误,该方法将返回nil。

代码语言:javascript
复制
master:getsockname()
client:getsockname()
server:getsockname()

还有一种方法:client:getpeername(),它将返回一个字符串,该字符串包含对等体的IP地址,后跟对等体用于连接的端口号。如果出现错误,该方法将返回nil。

对于要检索的"CLOSE_WAIT“、"ESTABLISHED”或其他连接信息,请阅读Official Documentation。它提供了您需要的一切,并对方法进行了简明的解释。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46033948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档